From 2315659b4488e4028f4efb618c41c6ae378707b8 Mon Sep 17 00:00:00 2001 From: Florian Fleissner Date: Sat, 16 Nov 2019 19:22:30 +0100 Subject: [PATCH] Added all available Linux XKB keymaps Signed-off-by: Florian Fleissner --- .../host_keymap/linux/af/fa-olpc/keymap.h | 331 +++++++++ .../host_keymap/linux/af/olpc-ps/keymap.h | 322 +++++++++ .../host_keymap/linux/af/ps/keymap.h | 427 ++++++++++++ .../host_keymap/linux/af/standard/keymap.h | 441 ++++++++++++ .../host_keymap/linux/af/uz-olpc/keymap.h | 329 +++++++++ .../host_keymap/linux/af/uz/keymap.h | 439 ++++++++++++ .../host_keymap/linux/al/plisi/keymap.h | 504 ++++++++++++++ .../host_keymap/linux/al/standard/keymap.h | 556 +++++++++++++++ .../host_keymap/linux/am/eastern-alt/keymap.h | 375 +++++++++++ .../host_keymap/linux/am/eastern/keymap.h | 375 +++++++++++ .../linux/am/olpc-phonetic/keymap.h | 368 ++++++++++ .../linux/am/phonetic-alt/keymap.h | 368 ++++++++++ .../host_keymap/linux/am/phonetic/keymap.h | 368 ++++++++++ .../host_keymap/linux/am/standard/keymap.h | 380 +++++++++++ .../host_keymap/linux/am/western/keymap.h | 375 +++++++++++ .../host_keymap/linux/apl/apl2/keymap.h | 304 +++++++++ .../host_keymap/linux/apl/aplplusII/keymap.h | 306 +++++++++ .../host_keymap/linux/apl/aplx/keymap.h | 277 ++++++++ .../host_keymap/linux/apl/dyalog/keymap.h | 300 +++++++++ .../host_keymap/linux/apl/sax/keymap.h | 282 ++++++++ .../host_keymap/linux/apl/standard/keymap.h | 293 ++++++++ .../host_keymap/linux/apl/unified/keymap.h | 254 +++++++ .../host_keymap/linux/ara/azerty/keymap.h | 443 ++++++++++++ .../linux/ara/azerty_digits/keymap.h | 443 ++++++++++++ .../host_keymap/linux/ara/basic_ext/keymap.h | 518 ++++++++++++++ .../linux/ara/basic_ext_digits/keymap.h | 507 ++++++++++++++ .../host_keymap/linux/ara/buckwalter/keymap.h | 323 +++++++++ .../host_keymap/linux/ara/digits/keymap.h | 441 ++++++++++++ .../host_keymap/linux/ara/mac/keymap.h | 422 ++++++++++++ .../host_keymap/linux/ara/olpc/keymap.h | 450 +++++++++++++ .../host_keymap/linux/ara/qwerty/keymap.h | 452 +++++++++++++ .../linux/ara/qwerty_digits/keymap.h | 441 ++++++++++++ .../host_keymap/linux/ara/standard/keymap.h | 452 +++++++++++++ .../host_keymap/linux/ara/sun_type6/keymap.h | 564 ++++++++++++++++ .../host_keymap/linux/ara/uga/keymap.h | 330 +++++++++ .../host_keymap/linux/at/mac/keymap.h | 571 ++++++++++++++++ .../host_keymap/linux/at/nodeadkeys/keymap.h | 598 ++++++++++++++++ .../host_keymap/linux/at/standard/keymap.h | 596 ++++++++++++++++ .../host_keymap/linux/at/sundeadkeys/keymap.h | 596 ++++++++++++++++ .../host_keymap/linux/au/standard/keymap.h | 439 ++++++++++++ .../host_keymap/linux/az/cyrillic/keymap.h | 365 ++++++++++ .../host_keymap/linux/az/standard/keymap.h | 433 ++++++++++++ .../linux/ba/alternatequotes/keymap.h | 567 ++++++++++++++++ .../host_keymap/linux/ba/standard/keymap.h | 571 ++++++++++++++++ .../host_keymap/linux/ba/unicode/keymap.h | 554 +++++++++++++++ .../host_keymap/linux/ba/unicodeus/keymap.h | 554 +++++++++++++++ .../host_keymap/linux/ba/us/keymap.h | 571 ++++++++++++++++ .../host_keymap/linux/bd/probhat/keymap.h | 324 +++++++++ .../host_keymap/linux/bd/standard/keymap.h | 372 ++++++++++ .../linux/be/iso-alternate/keymap.h | 577 ++++++++++++++++ .../host_keymap/linux/be/nodeadkeys/keymap.h | 582 ++++++++++++++++ .../host_keymap/linux/be/oss/keymap.h | 630 +++++++++++++++++ .../host_keymap/linux/be/oss_latin9/keymap.h | 575 ++++++++++++++++ .../linux/be/oss_sundeadkeys/keymap.h | 630 +++++++++++++++++ .../host_keymap/linux/be/standard/keymap.h | 577 ++++++++++++++++ .../host_keymap/linux/be/sun_type6/keymap.h | 463 +++++++++++++ .../host_keymap/linux/be/sundeadkeys/keymap.h | 571 ++++++++++++++++ .../host_keymap/linux/be/wang/keymap.h | 582 ++++++++++++++++ .../linux/bg/bas_phonetic/keymap.h | 373 ++++++++++ .../host_keymap/linux/bg/phonetic/keymap.h | 373 ++++++++++ .../host_keymap/linux/bg/standard/keymap.h | 372 ++++++++++ .../host_keymap/linux/br/dvorak/keymap.h | 599 +++++++++++++++++ .../host_keymap/linux/br/nativo-epo/keymap.h | 593 ++++++++++++++++ .../host_keymap/linux/br/nativo-us/keymap.h | 589 ++++++++++++++++ .../host_keymap/linux/br/nativo/keymap.h | 591 ++++++++++++++++ .../host_keymap/linux/br/nodeadkeys/keymap.h | 572 ++++++++++++++++ .../host_keymap/linux/br/standard/keymap.h | 575 ++++++++++++++++ .../host_keymap/linux/br/sun_type6/keymap.h | 494 ++++++++++++++ .../host_keymap/linux/br/thinkpad/keymap.h | 574 ++++++++++++++++ .../host_keymap/linux/brai/left_hand/keymap.h | 200 ++++++ .../linux/brai/right_hand/keymap.h | 200 ++++++ .../host_keymap/linux/brai/standard/keymap.h | 204 ++++++ .../host_keymap/linux/bt/standard/keymap.h | 417 ++++++++++++ .../host_keymap/linux/bw/standard/keymap.h | 452 +++++++++++++ .../host_keymap/linux/by/latin/keymap.h | 590 ++++++++++++++++ .../host_keymap/linux/by/legacy/keymap.h | 372 ++++++++++ .../host_keymap/linux/by/standard/keymap.h | 374 ++++++++++ .../host_keymap/linux/ca/eng/keymap.h | 439 ++++++++++++ .../host_keymap/linux/ca/fr-dvorak/keymap.h | 481 +++++++++++++ .../host_keymap/linux/ca/fr-legacy/keymap.h | 515 ++++++++++++++ .../host_keymap/linux/ca/ike/keymap.h | 311 +++++++++ .../host_keymap/linux/ca/kut/keymap.h | 469 +++++++++++++ .../host_keymap/linux/ca/multi-2gr/keymap.h | 329 +++++++++ .../host_keymap/linux/ca/multi/keymap.h | 484 +++++++++++++ .../host_keymap/linux/ca/multix/keymap.h | 484 +++++++++++++ .../host_keymap/linux/ca/shs/keymap.h | 461 +++++++++++++ .../host_keymap/linux/ca/standard/keymap.h | 481 +++++++++++++ .../host_keymap/linux/ca/sun_type6/keymap.h | 486 +++++++++++++ .../host_keymap/linux/cd/standard/keymap.h | 484 +++++++++++++ .../host_keymap/linux/ch/de_mac/keymap.h | 600 +++++++++++++++++ .../linux/ch/de_nodeadkeys/keymap.h | 585 ++++++++++++++++ .../linux/ch/de_sundeadkeys/keymap.h | 576 ++++++++++++++++ .../host_keymap/linux/ch/fr/keymap.h | 576 ++++++++++++++++ .../host_keymap/linux/ch/fr_mac/keymap.h | 598 ++++++++++++++++ .../linux/ch/fr_nodeadkeys/keymap.h | 585 ++++++++++++++++ .../linux/ch/fr_sundeadkeys/keymap.h | 576 ++++++++++++++++ .../host_keymap/linux/ch/legacy/keymap.h | 576 ++++++++++++++++ .../host_keymap/linux/ch/standard/keymap.h | 576 ++++++++++++++++ .../linux/ch/sun_type6_de/keymap.h | 471 +++++++++++++ .../linux/ch/sun_type6_fr/keymap.h | 471 +++++++++++++ .../host_keymap/linux/cm/azerty/keymap.h | 543 +++++++++++++++ .../host_keymap/linux/cm/dvorak/keymap.h | 524 +++++++++++++++ .../host_keymap/linux/cm/french/keymap.h | 582 ++++++++++++++++ .../host_keymap/linux/cm/mmuock/keymap.h | 512 ++++++++++++++ .../host_keymap/linux/cm/qwerty/keymap.h | 528 +++++++++++++++ .../host_keymap/linux/cm/standard/keymap.h | 439 ++++++++++++ .../host_keymap/linux/cn/standard/keymap.h | 439 ++++++++++++ .../host_keymap/linux/cn/tib/keymap.h | 286 ++++++++ .../linux/cn/tib_asciinum/keymap.h | 286 ++++++++ .../host_keymap/linux/cn/ug/keymap.h | 315 +++++++++ .../host_keymap/linux/cz/bksl/keymap.h | 544 +++++++++++++++ .../host_keymap/linux/cz/dvorak-ucw/keymap.h | 512 ++++++++++++++ .../host_keymap/linux/cz/qwerty/keymap.h | 544 +++++++++++++++ .../host_keymap/linux/cz/qwerty_bksl/keymap.h | 544 +++++++++++++++ .../host_keymap/linux/cz/rus/keymap.h | 566 ++++++++++++++++ .../host_keymap/linux/cz/standard/keymap.h | 544 +++++++++++++++ .../host_keymap/linux/cz/sun_type6/keymap.h | 492 ++++++++++++++ .../host_keymap/linux/cz/ucw/keymap.h | 301 +++++++++ .../host_keymap/linux/de/T3/keymap.h | 572 ++++++++++++++++ .../host_keymap/linux/de/adnw/keymap.h | 451 +++++++++++++ .../host_keymap/linux/de/bone/keymap.h | 451 +++++++++++++ .../linux/de/bone_eszett_home/keymap.h | 451 +++++++++++++ .../host_keymap/linux/de/deadacute/keymap.h | 598 ++++++++++++++++ .../linux/de/deadgraveacute/keymap.h | 598 ++++++++++++++++ .../host_keymap/linux/de/deadtilde/keymap.h | 593 ++++++++++++++++ .../host_keymap/linux/de/dsb/keymap.h | 589 ++++++++++++++++ .../host_keymap/linux/de/dsb_qwertz/keymap.h | 585 ++++++++++++++++ .../host_keymap/linux/de/dvorak/keymap.h | 512 ++++++++++++++ .../host_keymap/linux/de/hu/keymap.h | 605 +++++++++++++++++ .../host_keymap/linux/de/koy/keymap.h | 451 +++++++++++++ .../host_keymap/linux/de/lld/keymap.h | 596 ++++++++++++++++ .../host_keymap/linux/de/mac/keymap.h | 571 ++++++++++++++++ .../linux/de/mac_nodeadkeys/keymap.h | 578 ++++++++++++++++ .../host_keymap/linux/de/neo/keymap.h | 451 +++++++++++++ .../host_keymap/linux/de/neo_qwerty/keymap.h | 451 +++++++++++++ .../host_keymap/linux/de/neo_qwertz/keymap.h | 451 +++++++++++++ .../host_keymap/linux/de/nodeadkeys/keymap.h | 598 ++++++++++++++++ .../host_keymap/linux/de/pl/keymap.h | 605 +++++++++++++++++ .../host_keymap/linux/de/qwerty/keymap.h | 593 ++++++++++++++++ .../host_keymap/linux/de/ro/keymap.h | 601 +++++++++++++++++ .../linux/de/ro_nodeadkeys/keymap.h | 604 +++++++++++++++++ .../host_keymap/linux/de/ru-recom/keymap.h | 553 +++++++++++++++ .../host_keymap/linux/de/ru-translit/keymap.h | 553 +++++++++++++++ .../host_keymap/linux/de/ru/keymap.h | 554 +++++++++++++++ .../host_keymap/linux/de/standard/keymap.h | 596 ++++++++++++++++ .../host_keymap/linux/de/sun_type6/keymap.h | 468 +++++++++++++ .../host_keymap/linux/de/sundeadkeys/keymap.h | 596 ++++++++++++++++ .../host_keymap/linux/de/tr/keymap.h | 592 ++++++++++++++++ .../host_keymap/linux/de/us/keymap.h | 458 +++++++++++++ .../host_keymap/linux/dk/dvorak/keymap.h | 534 +++++++++++++++ .../host_keymap/linux/dk/mac/keymap.h | 570 ++++++++++++++++ .../linux/dk/mac_nodeadkeys/keymap.h | 582 ++++++++++++++++ .../host_keymap/linux/dk/nodeadkeys/keymap.h | 578 ++++++++++++++++ .../host_keymap/linux/dk/standard/keymap.h | 565 ++++++++++++++++ .../host_keymap/linux/dk/sun_type6/keymap.h | 467 +++++++++++++ .../host_keymap/linux/dk/winkeys/keymap.h | 565 ++++++++++++++++ .../host_keymap/linux/dz/ar/keymap.h | 443 ++++++++++++ .../host_keymap/linux/dz/ber/keymap.h | 409 +++++++++++ .../host_keymap/linux/dz/standard/keymap.h | 615 +++++++++++++++++ .../host_keymap/linux/ee/dvorak/keymap.h | 486 +++++++++++++ .../host_keymap/linux/ee/nodeadkeys/keymap.h | 591 ++++++++++++++++ .../host_keymap/linux/ee/standard/keymap.h | 584 ++++++++++++++++ .../host_keymap/linux/ee/sun_type6/keymap.h | 584 ++++++++++++++++ .../host_keymap/linux/ee/us/keymap.h | 470 +++++++++++++ .../host_keymap/linux/epo/legacy/keymap.h | 454 +++++++++++++ .../host_keymap/linux/epo/standard/keymap.h | 478 +++++++++++++ .../host_keymap/linux/es/ast/keymap.h | 571 ++++++++++++++++ .../host_keymap/linux/es/cat/keymap.h | 571 ++++++++++++++++ .../host_keymap/linux/es/deadtilde/keymap.h | 569 ++++++++++++++++ .../host_keymap/linux/es/dvorak/keymap.h | 578 ++++++++++++++++ .../host_keymap/linux/es/mac/keymap.h | 569 ++++++++++++++++ .../host_keymap/linux/es/nodeadkeys/keymap.h | 578 ++++++++++++++++ .../host_keymap/linux/es/standard/keymap.h | 569 ++++++++++++++++ .../host_keymap/linux/es/sun_type6/keymap.h | 466 +++++++++++++ .../host_keymap/linux/es/sundeadkeys/keymap.h | 569 ++++++++++++++++ .../host_keymap/linux/es/winkeys/keymap.h | 567 ++++++++++++++++ .../host_keymap/linux/et/standard/keymap.h | 280 ++++++++ .../host_keymap/linux/eu/standard/keymap.h | 610 +++++++++++++++++ .../host_keymap/linux/fi/classic/keymap.h | 556 +++++++++++++++ .../host_keymap/linux/fi/das/keymap.h | 487 ++++++++++++++ .../host_keymap/linux/fi/fidvorak/keymap.h | 545 +++++++++++++++ .../host_keymap/linux/fi/mac/keymap.h | 576 ++++++++++++++++ .../host_keymap/linux/fi/nodeadkeys/keymap.h | 568 ++++++++++++++++ .../host_keymap/linux/fi/smi/keymap.h | 606 +++++++++++++++++ .../host_keymap/linux/fi/standard/keymap.h | 545 +++++++++++++++ .../host_keymap/linux/fi/sun_type6/keymap.h | 465 +++++++++++++ .../host_keymap/linux/fi/winkeys/keymap.h | 543 +++++++++++++++ .../host_keymap/linux/fo/nodeadkeys/keymap.h | 580 ++++++++++++++++ .../host_keymap/linux/fo/standard/keymap.h | 569 ++++++++++++++++ .../host_keymap/linux/fr/azerty/keymap.h | 466 +++++++++++++ .../host_keymap/linux/fr/bepo/keymap.h | 608 +++++++++++++++++ .../host_keymap/linux/fr/bepo_latin9/keymap.h | 582 ++++++++++++++++ .../host_keymap/linux/fr/bre/keymap.h | 600 +++++++++++++++++ .../host_keymap/linux/fr/dvorak/keymap.h | 435 ++++++++++++ .../host_keymap/linux/fr/geo/keymap.h | 387 +++++++++++ .../host_keymap/linux/fr/latin9/keymap.h | 605 +++++++++++++++++ .../linux/fr/latin9_nodeadkeys/keymap.h | 600 +++++++++++++++++ .../linux/fr/latin9_sundeadkeys/keymap.h | 605 +++++++++++++++++ .../host_keymap/linux/fr/mac/keymap.h | 564 ++++++++++++++++ .../host_keymap/linux/fr/nodeadkeys/keymap.h | 589 ++++++++++++++++ .../host_keymap/linux/fr/oci/keymap.h | 636 ++++++++++++++++++ .../host_keymap/linux/fr/oss/keymap.h | 630 +++++++++++++++++ .../host_keymap/linux/fr/oss_latin9/keymap.h | 575 ++++++++++++++++ .../linux/fr/oss_nodeadkeys/keymap.h | 635 +++++++++++++++++ .../linux/fr/oss_sundeadkeys/keymap.h | 630 +++++++++++++++++ .../host_keymap/linux/fr/standard/keymap.h | 582 ++++++++++++++++ .../host_keymap/linux/fr/sun_type6/keymap.h | 466 +++++++++++++ .../host_keymap/linux/fr/sundeadkeys/keymap.h | 582 ++++++++++++++++ .../host_keymap/linux/gb/colemak/keymap.h | 517 ++++++++++++++ .../host_keymap/linux/gb/dvorak/keymap.h | 494 ++++++++++++++ .../host_keymap/linux/gb/dvorakukp/keymap.h | 494 ++++++++++++++ .../host_keymap/linux/gb/extd/keymap.h | 581 ++++++++++++++++ .../host_keymap/linux/gb/intl/keymap.h | 564 ++++++++++++++++ .../host_keymap/linux/gb/mac/keymap.h | 575 ++++++++++++++++ .../host_keymap/linux/gb/mac_intl/keymap.h | 563 ++++++++++++++++ .../host_keymap/linux/gb/standard/keymap.h | 509 ++++++++++++++ .../host_keymap/linux/gb/sun_type6/keymap.h | 446 ++++++++++++ .../host_keymap/linux/ge/ergonomic/keymap.h | 440 ++++++++++++ .../host_keymap/linux/ge/mess/keymap.h | 454 +++++++++++++ .../host_keymap/linux/ge/os/keymap.h | 371 ++++++++++ .../host_keymap/linux/ge/ru/keymap.h | 405 +++++++++++ .../host_keymap/linux/ge/standard/keymap.h | 439 ++++++++++++ .../host_keymap/linux/gh/akan/keymap.h | 447 ++++++++++++ .../host_keymap/linux/gh/avn/keymap.h | 445 ++++++++++++ .../host_keymap/linux/gh/ewe/keymap.h | 451 +++++++++++++ .../host_keymap/linux/gh/fula/keymap.h | 475 +++++++++++++ .../host_keymap/linux/gh/ga/keymap.h | 449 +++++++++++++ .../host_keymap/linux/gh/generic/keymap.h | 461 +++++++++++++ .../host_keymap/linux/gh/gillbt/keymap.h | 475 +++++++++++++ .../host_keymap/linux/gh/hausa/keymap.h | 475 +++++++++++++ .../host_keymap/linux/gh/standard/keymap.h | 443 ++++++++++++ .../host_keymap/linux/gn/standard/keymap.h | 309 +++++++++ .../host_keymap/linux/gr/extended/keymap.h | 402 +++++++++++ .../host_keymap/linux/gr/nodeadkeys/keymap.h | 385 +++++++++++ .../host_keymap/linux/gr/polytonic/keymap.h | 397 +++++++++++ .../host_keymap/linux/gr/simple/keymap.h | 387 +++++++++++ .../host_keymap/linux/gr/standard/keymap.h | 454 +++++++++++++ .../host_keymap/linux/gr/sun_type6/keymap.h | 406 +++++++++++ .../linux/hr/alternatequotes/keymap.h | 567 ++++++++++++++++ .../host_keymap/linux/hr/standard/keymap.h | 568 ++++++++++++++++ .../host_keymap/linux/hr/unicode/keymap.h | 554 +++++++++++++++ .../host_keymap/linux/hr/unicodeus/keymap.h | 554 +++++++++++++++ .../host_keymap/linux/hr/us/keymap.h | 468 +++++++++++++ .../linux/hu/101_qwerty_comma_dead/keymap.h | 575 ++++++++++++++++ .../linux/hu/101_qwerty_comma_nodead/keymap.h | 586 ++++++++++++++++ .../linux/hu/101_qwerty_dot_dead/keymap.h | 575 ++++++++++++++++ .../linux/hu/101_qwerty_dot_nodead/keymap.h | 586 ++++++++++++++++ .../linux/hu/101_qwertz_comma_dead/keymap.h | 575 ++++++++++++++++ .../linux/hu/101_qwertz_comma_nodead/keymap.h | 586 ++++++++++++++++ .../linux/hu/101_qwertz_dot_dead/keymap.h | 575 ++++++++++++++++ .../linux/hu/101_qwertz_dot_nodead/keymap.h | 586 ++++++++++++++++ .../linux/hu/102_qwerty_comma_dead/keymap.h | 575 ++++++++++++++++ .../linux/hu/102_qwerty_comma_nodead/keymap.h | 586 ++++++++++++++++ .../linux/hu/102_qwerty_dot_dead/keymap.h | 575 ++++++++++++++++ .../linux/hu/102_qwerty_dot_nodead/keymap.h | 586 ++++++++++++++++ .../linux/hu/102_qwertz_comma_dead/keymap.h | 575 ++++++++++++++++ .../linux/hu/102_qwertz_comma_nodead/keymap.h | 586 ++++++++++++++++ .../linux/hu/102_qwertz_dot_dead/keymap.h | 575 ++++++++++++++++ .../linux/hu/102_qwertz_dot_nodead/keymap.h | 586 ++++++++++++++++ .../host_keymap/linux/hu/nodeadkeys/keymap.h | 586 ++++++++++++++++ .../host_keymap/linux/hu/oldhun/keymap.h | 375 +++++++++++ .../host_keymap/linux/hu/qwerty/keymap.h | 575 ++++++++++++++++ .../host_keymap/linux/hu/standard/keymap.h | 575 ++++++++++++++++ .../host_keymap/linux/id/standard/keymap.h | 413 ++++++++++++ .../host_keymap/linux/ie/CloGaelach/keymap.h | 613 +++++++++++++++++ .../linux/ie/UnicodeExpert/keymap.h | 487 ++++++++++++++ .../host_keymap/linux/ie/ogam/keymap.h | 216 ++++++ .../host_keymap/linux/ie/ogam_is434/keymap.h | 450 +++++++++++++ .../host_keymap/linux/ie/standard/keymap.h | 594 ++++++++++++++++ .../host_keymap/linux/il/biblical/keymap.h | 320 +++++++++ .../host_keymap/linux/il/biblicalSIL/keymap.h | 312 +++++++++ .../host_keymap/linux/il/lyx/keymap.h | 350 ++++++++++ .../host_keymap/linux/il/phonetic/keymap.h | 257 +++++++ .../host_keymap/linux/il/standard/keymap.h | 459 +++++++++++++ .../host_keymap/linux/in/ben/keymap.h | 289 ++++++++ .../linux/in/ben_baishakhi/keymap.h | 349 ++++++++++ .../host_keymap/linux/in/ben_bornona/keymap.h | 327 +++++++++ .../linux/in/ben_gitanjali/keymap.h | 303 +++++++++ .../linux/in/ben_inscript/keymap.h | 284 ++++++++ .../host_keymap/linux/in/ben_probhat/keymap.h | 324 +++++++++ .../host_keymap/linux/in/bolnagri/keymap.h | 365 ++++++++++ .../host_keymap/linux/in/eeyek/keymap.h | 330 +++++++++ .../host_keymap/linux/in/eng/keymap.h | 441 ++++++++++++ .../host_keymap/linux/in/guj/keymap.h | 293 ++++++++ .../host_keymap/linux/in/guru/keymap.h | 294 ++++++++ .../host_keymap/linux/in/hin-kagapa/keymap.h | 393 +++++++++++ .../host_keymap/linux/in/hin-wx/keymap.h | 355 ++++++++++ .../host_keymap/linux/in/jhelum/keymap.h | 357 ++++++++++ .../host_keymap/linux/in/kan-kagapa/keymap.h | 376 +++++++++++ .../host_keymap/linux/in/kan/keymap.h | 283 ++++++++ .../host_keymap/linux/in/mal/keymap.h | 314 +++++++++ .../linux/in/mal_enhanced/keymap.h | 316 +++++++++ .../host_keymap/linux/in/mal_lalitha/keymap.h | 358 ++++++++++ .../host_keymap/linux/in/mar-kagapa/keymap.h | 393 +++++++++++ .../host_keymap/linux/in/olck/keymap.h | 310 +++++++++ .../host_keymap/linux/in/ori/keymap.h | 278 ++++++++ .../host_keymap/linux/in/san-kagapa/keymap.h | 393 +++++++++++ .../host_keymap/linux/in/standard/keymap.h | 362 ++++++++++ .../host_keymap/linux/in/tam/keymap.h | 277 ++++++++ .../host_keymap/linux/in/tam_TAB/keymap.h | 265 ++++++++ .../host_keymap/linux/in/tam_TSCII/keymap.h | 272 ++++++++ .../in/tam_keyboard_with_numerals/keymap.h | 297 ++++++++ .../host_keymap/linux/in/tam_unicode/keymap.h | 297 ++++++++ .../host_keymap/linux/in/tel-kagapa/keymap.h | 374 ++++++++++ .../host_keymap/linux/in/tel-sarala/keymap.h | 366 ++++++++++ .../host_keymap/linux/in/tel/keymap.h | 307 +++++++++ .../linux/in/urd-phonetic/keymap.h | 316 +++++++++ .../linux/in/urd-phonetic3/keymap.h | 340 ++++++++++ .../host_keymap/linux/in/urd-winkeys/keymap.h | 312 +++++++++ .../host_keymap/linux/iq/ku/keymap.h | 552 +++++++++++++++ .../host_keymap/linux/iq/ku_alt/keymap.h | 592 ++++++++++++++++ .../host_keymap/linux/iq/ku_ara/keymap.h | 590 ++++++++++++++++ .../host_keymap/linux/iq/ku_f/keymap.h | 548 +++++++++++++++ .../host_keymap/linux/iq/standard/keymap.h | 452 +++++++++++++ .../host_keymap/linux/ir/ave/keymap.h | 262 ++++++++ .../host_keymap/linux/ir/ku/keymap.h | 552 +++++++++++++++ .../host_keymap/linux/ir/ku_alt/keymap.h | 592 ++++++++++++++++ .../host_keymap/linux/ir/ku_ara/keymap.h | 590 ++++++++++++++++ .../host_keymap/linux/ir/ku_f/keymap.h | 548 +++++++++++++++ .../host_keymap/linux/ir/pes_keypad/keymap.h | 447 ++++++++++++ .../host_keymap/linux/ir/standard/keymap.h | 458 +++++++++++++ .../host_keymap/linux/is/Sundeadkeys/keymap.h | 567 ++++++++++++++++ .../host_keymap/linux/is/dvorak/keymap.h | 479 +++++++++++++ .../host_keymap/linux/is/mac/keymap.h | 580 ++++++++++++++++ .../host_keymap/linux/is/mac_legacy/keymap.h | 564 ++++++++++++++++ .../host_keymap/linux/is/nodeadkeys/keymap.h | 579 ++++++++++++++++ .../host_keymap/linux/is/standard/keymap.h | 585 ++++++++++++++++ .../host_keymap/linux/it/fur/keymap.h | 587 ++++++++++++++++ .../host_keymap/linux/it/geo/keymap.h | 550 +++++++++++++++ .../host_keymap/linux/it/ibm/keymap.h | 462 +++++++++++++ .../host_keymap/linux/it/intl/keymap.h | 589 ++++++++++++++++ .../host_keymap/linux/it/lld/keymap.h | 595 ++++++++++++++++ .../host_keymap/linux/it/mac/keymap.h | 522 ++++++++++++++ .../host_keymap/linux/it/nodeadkeys/keymap.h | 594 ++++++++++++++++ .../host_keymap/linux/it/scn/keymap.h | 592 ++++++++++++++++ .../host_keymap/linux/it/standard/keymap.h | 591 ++++++++++++++++ .../host_keymap/linux/it/sun_type6/keymap.h | 463 +++++++++++++ .../host_keymap/linux/it/us/keymap.h | 508 ++++++++++++++ .../host_keymap/linux/it/winkeys/keymap.h | 589 ++++++++++++++++ .../host_keymap/linux/jp/OADG109A/keymap.h | 433 ++++++++++++ .../host_keymap/linux/jp/dvorak/keymap.h | 433 ++++++++++++ .../host_keymap/linux/jp/kana/keymap.h | 318 +++++++++ .../host_keymap/linux/jp/kana86/keymap.h | 435 ++++++++++++ .../host_keymap/linux/jp/mac/keymap.h | 317 +++++++++ .../host_keymap/linux/jp/standard/keymap.h | 433 ++++++++++++ .../host_keymap/linux/jp/sun_type6/keymap.h | 552 +++++++++++++++ .../host_keymap/linux/jp/sun_type7/keymap.h | 433 ++++++++++++ .../linux/jp/sun_type7_suncompat/keymap.h | 430 ++++++++++++ .../host_keymap/linux/ke/kik/keymap.h | 452 +++++++++++++ .../host_keymap/linux/ke/standard/keymap.h | 452 +++++++++++++ .../host_keymap/linux/kg/phonetic/keymap.h | 378 +++++++++++ .../host_keymap/linux/kg/standard/keymap.h | 376 +++++++++++ .../host_keymap/linux/kh/standard/keymap.h | 397 +++++++++++ .../host_keymap/linux/kr/kr104/keymap.h | 438 ++++++++++++ .../host_keymap/linux/kr/standard/keymap.h | 439 ++++++++++++ .../host_keymap/linux/kr/sun_type6/keymap.h | 439 ++++++++++++ .../host_keymap/linux/kz/ext/keymap.h | 454 +++++++++++++ .../host_keymap/linux/kz/kazrus/keymap.h | 378 +++++++++++ .../host_keymap/linux/kz/ruskaz/keymap.h | 378 +++++++++++ .../host_keymap/linux/kz/standard/keymap.h | 388 +++++++++++ .../host_keymap/linux/la/standard/keymap.h | 302 +++++++++ .../host_keymap/linux/la/stea/keymap.h | 323 +++++++++ .../linux/latam/deadtilde/keymap.h | 566 ++++++++++++++++ .../host_keymap/linux/latam/dvorak/keymap.h | 548 +++++++++++++++ .../linux/latam/nodeadkeys/keymap.h | 581 ++++++++++++++++ .../host_keymap/linux/latam/standard/keymap.h | 565 ++++++++++++++++ .../linux/latam/sundeadkeys/keymap.h | 565 ++++++++++++++++ .../host_keymap/linux/lk/standard/keymap.h | 454 +++++++++++++ .../host_keymap/linux/lk/tam_TAB/keymap.h | 265 ++++++++ .../host_keymap/linux/lk/tam_unicode/keymap.h | 297 ++++++++ .../host_keymap/linux/lk/us/keymap.h | 414 ++++++++++++ .../host_keymap/linux/lt/ibm/keymap.h | 592 ++++++++++++++++ .../host_keymap/linux/lt/lekp/keymap.h | 501 ++++++++++++++ .../host_keymap/linux/lt/lekpa/keymap.h | 501 ++++++++++++++ .../host_keymap/linux/lt/standard/keymap.h | 590 ++++++++++++++++ .../host_keymap/linux/lt/std/keymap.h | 596 ++++++++++++++++ .../host_keymap/linux/lt/sun_type6/keymap.h | 582 ++++++++++++++++ .../host_keymap/linux/lt/us/keymap.h | 590 ++++++++++++++++ .../host_keymap/linux/lt/us_dvorak/keymap.h | 491 ++++++++++++++ .../host_keymap/linux/lv/adapted/keymap.h | 534 +++++++++++++++ .../host_keymap/linux/lv/apostrophe/keymap.h | 553 +++++++++++++++ .../linux/lv/apostrophecolemak/keymap.h | 553 +++++++++++++++ .../host_keymap/linux/lv/colemak/keymap.h | 554 +++++++++++++++ .../host_keymap/linux/lv/dvorak/keymap.h | 550 +++++++++++++++ .../host_keymap/linux/lv/dvorakprogr/keymap.h | 552 +++++++++++++++ .../host_keymap/linux/lv/ergonomic/keymap.h | 526 +++++++++++++++ .../host_keymap/linux/lv/fkey/keymap.h | 555 +++++++++++++++ .../linux/lv/minuskeydvorak/keymap.h | 549 +++++++++++++++ .../linux/lv/minuskeydvorakprogr/keymap.h | 551 +++++++++++++++ .../host_keymap/linux/lv/modern/keymap.h | 547 +++++++++++++++ .../host_keymap/linux/lv/standard/keymap.h | 554 +++++++++++++++ .../host_keymap/linux/lv/sun_type6/keymap.h | 554 +++++++++++++++ .../host_keymap/linux/lv/tilde/keymap.h | 555 +++++++++++++++ .../host_keymap/linux/lv/ykeydvorak/keymap.h | 551 +++++++++++++++ .../linux/lv/ykeydvorakprogr/keymap.h | 553 +++++++++++++++ .../host_keymap/linux/ma/french/keymap.h | 582 ++++++++++++++++ .../host_keymap/linux/ma/standard/keymap.h | 443 ++++++++++++ .../linux/ma/tifinagh-alt-phonetic/keymap.h | 347 ++++++++++ .../linux/ma/tifinagh-alt/keymap.h | 350 ++++++++++ .../ma/tifinagh-extended-phonetic/keymap.h | 347 ++++++++++ .../linux/ma/tifinagh-extended/keymap.h | 351 ++++++++++ .../linux/ma/tifinagh-phonetic/keymap.h | 322 +++++++++ .../host_keymap/linux/ma/tifinagh/keymap.h | 325 +++++++++ .../host_keymap/linux/mao/standard/keymap.h | 583 ++++++++++++++++ .../host_keymap/linux/md/gag/keymap.h | 476 +++++++++++++ .../host_keymap/linux/md/standard/keymap.h | 496 ++++++++++++++ .../host_keymap/linux/me/cyrillic/keymap.h | 462 +++++++++++++ .../linux/me/cyrillicalternatequotes/keymap.h | 458 +++++++++++++ .../host_keymap/linux/me/cyrillicyz/keymap.h | 462 +++++++++++++ .../linux/me/latinalternatequotes/keymap.h | 569 ++++++++++++++++ .../linux/me/latinunicode/keymap.h | 556 +++++++++++++++ .../linux/me/latinunicodeyz/keymap.h | 557 +++++++++++++++ .../host_keymap/linux/me/latinyz/keymap.h | 575 ++++++++++++++++ .../host_keymap/linux/me/standard/keymap.h | 573 ++++++++++++++++ .../host_keymap/linux/mk/nodeadkeys/keymap.h | 381 +++++++++++ .../host_keymap/linux/mk/standard/keymap.h | 379 +++++++++++ .../host_keymap/linux/ml/fr-oss/keymap.h | 618 +++++++++++++++++ .../host_keymap/linux/ml/standard/keymap.h | 582 ++++++++++++++++ .../host_keymap/linux/ml/us-intl/keymap.h | 578 ++++++++++++++++ .../host_keymap/linux/ml/us-mac/keymap.h | 588 ++++++++++++++++ .../host_keymap/linux/mm/standard/keymap.h | 303 +++++++++ .../host_keymap/linux/mn/standard/keymap.h | 463 +++++++++++++ .../host_keymap/linux/mt/standard/keymap.h | 584 ++++++++++++++++ .../host_keymap/linux/mt/us/keymap.h | 580 ++++++++++++++++ .../host_keymap/linux/mv/standard/keymap.h | 337 ++++++++++ .../host_keymap/linux/my/phonetic/keymap.h | 360 ++++++++++ .../host_keymap/linux/my/standard/keymap.h | 399 +++++++++++ .../linux/nec_vndr/jp/standard/keymap.h | 515 ++++++++++++++ .../host_keymap/linux/ng/hausa/keymap.h | 476 +++++++++++++ .../host_keymap/linux/ng/igbo/keymap.h | 458 +++++++++++++ .../host_keymap/linux/ng/standard/keymap.h | 444 ++++++++++++ .../host_keymap/linux/ng/yoruba/keymap.h | 454 +++++++++++++ .../host_keymap/linux/nl/mac/keymap.h | 578 ++++++++++++++++ .../host_keymap/linux/nl/standard/keymap.h | 573 ++++++++++++++++ .../host_keymap/linux/nl/std/keymap.h | 475 +++++++++++++ .../host_keymap/linux/nl/sun_type6/keymap.h | 480 +++++++++++++ .../host_keymap/linux/nl/sundeadkeys/keymap.h | 573 ++++++++++++++++ .../host_keymap/linux/no/colemak/keymap.h | 582 ++++++++++++++++ .../host_keymap/linux/no/dvorak/keymap.h | 529 +++++++++++++++ .../host_keymap/linux/no/mac/keymap.h | 432 ++++++++++++ .../linux/no/mac_nodeadkeys/keymap.h | 435 ++++++++++++ .../host_keymap/linux/no/nodeadkeys/keymap.h | 596 ++++++++++++++++ .../host_keymap/linux/no/smi/keymap.h | 606 +++++++++++++++++ .../linux/no/smi_nodeadkeys/keymap.h | 605 +++++++++++++++++ .../host_keymap/linux/no/standard/keymap.h | 582 ++++++++++++++++ .../host_keymap/linux/no/sun_type6/keymap.h | 465 +++++++++++++ .../host_keymap/linux/no/winkeys/keymap.h | 582 ++++++++++++++++ .../host_keymap/linux/np/standard/keymap.h | 292 ++++++++ .../linux/ph/capewell-dvorak-bay/keymap.h | 220 ++++++ .../linux/ph/capewell-dvorak/keymap.h | 540 +++++++++++++++ .../linux/ph/capewell-qwerf2k6-bay/keymap.h | 220 ++++++ .../linux/ph/capewell-qwerf2k6/keymap.h | 540 +++++++++++++++ .../host_keymap/linux/ph/colemak-bay/keymap.h | 220 ++++++ .../host_keymap/linux/ph/colemak/keymap.h | 540 +++++++++++++++ .../host_keymap/linux/ph/dvorak-bay/keymap.h | 220 ++++++ .../host_keymap/linux/ph/dvorak/keymap.h | 540 +++++++++++++++ .../host_keymap/linux/ph/qwerty-bay/keymap.h | 220 ++++++ .../host_keymap/linux/ph/standard/keymap.h | 540 +++++++++++++++ .../host_keymap/linux/pk/ara/keymap.h | 312 +++++++++ .../host_keymap/linux/pk/snd/keymap.h | 330 +++++++++ .../host_keymap/linux/pk/standard/keymap.h | 316 +++++++++ .../host_keymap/linux/pk/urd-crulp/keymap.h | 340 ++++++++++ .../host_keymap/linux/pk/urd-nla/keymap.h | 312 +++++++++ .../host_keymap/linux/pl/colemak/keymap.h | 587 ++++++++++++++++ .../host_keymap/linux/pl/csb/keymap.h | 586 ++++++++++++++++ .../host_keymap/linux/pl/dvorak/keymap.h | 488 ++++++++++++++ .../linux/pl/dvorak_altquotes/keymap.h | 492 ++++++++++++++ .../linux/pl/dvorak_quotes/keymap.h | 492 ++++++++++++++ .../host_keymap/linux/pl/dvp/keymap.h | 543 +++++++++++++++ .../host_keymap/linux/pl/glagolica/keymap.h | 241 +++++++ .../host_keymap/linux/pl/intl/keymap.h | 539 +++++++++++++++ .../host_keymap/linux/pl/legacy/keymap.h | 590 ++++++++++++++++ .../host_keymap/linux/pl/qwertz/keymap.h | 566 ++++++++++++++++ .../linux/pl/ru_phonetic_dvorak/keymap.h | 428 ++++++++++++ .../host_keymap/linux/pl/standard/keymap.h | 612 +++++++++++++++++ .../host_keymap/linux/pl/sun_type6/keymap.h | 478 +++++++++++++ .../host_keymap/linux/pl/szl/keymap.h | 588 ++++++++++++++++ .../host_keymap/linux/pt/mac/keymap.h | 568 ++++++++++++++++ .../linux/pt/mac_nodeadkeys/keymap.h | 572 ++++++++++++++++ .../linux/pt/mac_sundeadkeys/keymap.h | 567 ++++++++++++++++ .../host_keymap/linux/pt/nativo-epo/keymap.h | 588 ++++++++++++++++ .../host_keymap/linux/pt/nativo-us/keymap.h | 578 ++++++++++++++++ .../host_keymap/linux/pt/nativo/keymap.h | 580 ++++++++++++++++ .../host_keymap/linux/pt/nodeadkeys/keymap.h | 577 ++++++++++++++++ .../host_keymap/linux/pt/standard/keymap.h | 565 ++++++++++++++++ .../host_keymap/linux/pt/sun_type6/keymap.h | 463 +++++++++++++ .../host_keymap/linux/pt/sundeadkeys/keymap.h | 564 ++++++++++++++++ .../host_keymap/linux/ro/cedilla/keymap.h | 500 ++++++++++++++ .../host_keymap/linux/ro/crh_dobruja/keymap.h | 569 ++++++++++++++++ .../host_keymap/linux/ro/ergonomic/keymap.h | 494 ++++++++++++++ .../host_keymap/linux/ro/standard/keymap.h | 496 ++++++++++++++ .../host_keymap/linux/ro/std/keymap.h | 496 ++++++++++++++ .../host_keymap/linux/ro/std_cedilla/keymap.h | 500 ++++++++++++++ .../host_keymap/linux/ro/sun_type6/keymap.h | 500 ++++++++++++++ .../host_keymap/linux/ro/winkeys/keymap.h | 562 ++++++++++++++++ .../linux/rs/alternatequotes/keymap.h | 458 +++++++++++++ .../linux/rs/combiningkeys/keymap.h | 463 +++++++++++++ .../host_keymap/linux/rs/latin/keymap.h | 571 ++++++++++++++++ .../linux/rs/latinalternatequotes/keymap.h | 567 ++++++++++++++++ .../linux/rs/latinunicode/keymap.h | 554 +++++++++++++++ .../linux/rs/latinunicodeyz/keymap.h | 554 +++++++++++++++ .../host_keymap/linux/rs/latinyz/keymap.h | 571 ++++++++++++++++ .../host_keymap/linux/rs/rue/keymap.h | 464 +++++++++++++ .../host_keymap/linux/rs/standard/keymap.h | 462 +++++++++++++ .../host_keymap/linux/rs/yz/keymap.h | 462 +++++++++++++ .../host_keymap/linux/ru/bak/keymap.h | 405 +++++++++++ .../host_keymap/linux/ru/chm/keymap.h | 387 +++++++++++ .../host_keymap/linux/ru/chu/keymap.h | 351 ++++++++++ .../host_keymap/linux/ru/cv/keymap.h | 385 +++++++++++ .../host_keymap/linux/ru/cv_latin/keymap.h | 494 ++++++++++++++ .../host_keymap/linux/ru/dos/keymap.h | 377 +++++++++++ .../host_keymap/linux/ru/kom/keymap.h | 383 +++++++++++ .../host_keymap/linux/ru/legacy/keymap.h | 373 ++++++++++ .../host_keymap/linux/ru/mac/keymap.h | 385 +++++++++++ .../host_keymap/linux/ru/os_legacy/keymap.h | 371 ++++++++++ .../host_keymap/linux/ru/os_winkeys/keymap.h | 373 ++++++++++ .../host_keymap/linux/ru/phonetic/keymap.h | 380 +++++++++++ .../linux/ru/phonetic_azerty/keymap.h | 448 ++++++++++++ .../linux/ru/phonetic_dvorak/keymap.h | 388 +++++++++++ .../host_keymap/linux/ru/phonetic_fr/keymap.h | 551 +++++++++++++++ .../linux/ru/phonetic_winkeys/keymap.h | 380 +++++++++++ .../host_keymap/linux/ru/prxn/keymap.h | 530 +++++++++++++++ .../host_keymap/linux/ru/rulemak/keymap.h | 594 ++++++++++++++++ .../host_keymap/linux/ru/ruu/keymap.h | 475 +++++++++++++ .../host_keymap/linux/ru/sah/keymap.h | 413 ++++++++++++ .../host_keymap/linux/ru/srp/keymap.h | 388 +++++++++++ .../host_keymap/linux/ru/standard/keymap.h | 375 +++++++++++ .../host_keymap/linux/ru/sun_type6/keymap.h | 572 ++++++++++++++++ .../host_keymap/linux/ru/tt/keymap.h | 401 +++++++++++ .../linux/ru/typewriter-legacy/keymap.h | 374 ++++++++++ .../host_keymap/linux/ru/typewriter/keymap.h | 374 ++++++++++ .../host_keymap/linux/ru/udm/keymap.h | 386 +++++++++++ .../host_keymap/linux/ru/xal/keymap.h | 426 ++++++++++++ .../host_keymap/linux/se/dvorak/keymap.h | 574 ++++++++++++++++ .../host_keymap/linux/se/dvorak_a5/keymap.h | 506 ++++++++++++++ .../host_keymap/linux/se/mac/keymap.h | 576 ++++++++++++++++ .../host_keymap/linux/se/nodeadkeys/keymap.h | 585 ++++++++++++++++ .../host_keymap/linux/se/ovd/keymap.h | 577 ++++++++++++++++ .../host_keymap/linux/se/rus/keymap.h | 436 ++++++++++++ .../linux/se/rus_nodeadkeys/keymap.h | 436 ++++++++++++ .../host_keymap/linux/se/smi/keymap.h | 606 +++++++++++++++++ .../host_keymap/linux/se/standard/keymap.h | 576 ++++++++++++++++ .../host_keymap/linux/se/sun_type6/keymap.h | 465 +++++++++++++ .../host_keymap/linux/se/svdvorak/keymap.h | 570 ++++++++++++++++ .../host_keymap/linux/se/swl/keymap.h | 407 +++++++++++ .../host_keymap/linux/se/us_dvorak/keymap.h | 562 ++++++++++++++++ .../linux/si/alternatequotes/keymap.h | 565 ++++++++++++++++ .../host_keymap/linux/si/standard/keymap.h | 569 ++++++++++++++++ .../host_keymap/linux/si/us/keymap.h | 569 ++++++++++++++++ .../host_keymap/linux/sk/bksl/keymap.h | 548 +++++++++++++++ .../host_keymap/linux/sk/qwerty/keymap.h | 550 +++++++++++++++ .../host_keymap/linux/sk/qwerty_bksl/keymap.h | 548 +++++++++++++++ .../host_keymap/linux/sk/standard/keymap.h | 550 +++++++++++++++ .../host_keymap/linux/sk/sun_type6/keymap.h | 494 ++++++++++++++ .../host_keymap/linux/sn/standard/keymap.h | 582 ++++++++++++++++ .../host_keymap/linux/sy/ku/keymap.h | 552 +++++++++++++++ .../host_keymap/linux/sy/ku_alt/keymap.h | 592 ++++++++++++++++ .../host_keymap/linux/sy/ku_f/keymap.h | 548 +++++++++++++++ .../host_keymap/linux/sy/standard/keymap.h | 452 +++++++++++++ .../host_keymap/linux/sy/syc/keymap.h | 305 +++++++++ .../linux/sy/syc_phonetic/keymap.h | 305 +++++++++ .../host_keymap/linux/tg/standard/keymap.h | 507 ++++++++++++++ .../host_keymap/linux/th/pat/keymap.h | 383 +++++++++++ .../host_keymap/linux/th/standard/keymap.h | 384 +++++++++++ .../host_keymap/linux/th/tis/keymap.h | 380 +++++++++++ .../host_keymap/linux/tj/legacy/keymap.h | 407 +++++++++++ .../host_keymap/linux/tj/standard/keymap.h | 392 +++++++++++ .../host_keymap/linux/tm/alt/keymap.h | 472 +++++++++++++ .../host_keymap/linux/tm/standard/keymap.h | 472 +++++++++++++ .../host_keymap/linux/tr/alt/keymap.h | 590 ++++++++++++++++ .../host_keymap/linux/tr/crh/keymap.h | 562 ++++++++++++++++ .../host_keymap/linux/tr/crh_alt/keymap.h | 596 ++++++++++++++++ .../host_keymap/linux/tr/crh_f/keymap.h | 554 +++++++++++++++ .../host_keymap/linux/tr/f/keymap.h | 548 +++++++++++++++ .../host_keymap/linux/tr/intl/keymap.h | 553 +++++++++++++++ .../host_keymap/linux/tr/ku/keymap.h | 552 +++++++++++++++ .../host_keymap/linux/tr/ku_alt/keymap.h | 592 ++++++++++++++++ .../host_keymap/linux/tr/ku_f/keymap.h | 548 +++++++++++++++ .../host_keymap/linux/tr/standard/keymap.h | 558 +++++++++++++++ .../host_keymap/linux/tr/sun_type6/keymap.h | 470 +++++++++++++ .../host_keymap/linux/tr/sundeadkeys/keymap.h | 558 +++++++++++++++ .../host_keymap/linux/tw/indigenous/keymap.h | 533 +++++++++++++++ .../host_keymap/linux/tw/saisiyat/keymap.h | 533 +++++++++++++++ .../host_keymap/linux/tw/standard/keymap.h | 533 +++++++++++++++ .../host_keymap/linux/tz/standard/keymap.h | 338 ++++++++++ .../host_keymap/linux/ua/homophonic/keymap.h | 380 +++++++++++ .../host_keymap/linux/ua/legacy/keymap.h | 376 +++++++++++ .../host_keymap/linux/ua/phonetic/keymap.h | 376 +++++++++++ .../host_keymap/linux/ua/rstu/keymap.h | 376 +++++++++++ .../host_keymap/linux/ua/rstu_ru/keymap.h | 376 +++++++++++ .../host_keymap/linux/ua/standard/keymap.h | 463 +++++++++++++ .../host_keymap/linux/ua/sun_type6/keymap.h | 570 ++++++++++++++++ .../host_keymap/linux/ua/typewriter/keymap.h | 374 ++++++++++ .../host_keymap/linux/ua/winkeys/keymap.h | 378 +++++++++++ .../linux/us/alt-intl-unicode/keymap.h | 566 ++++++++++++++++ .../host_keymap/linux/us/alt-intl/keymap.h | 462 +++++++++++++ .../host_keymap/linux/us/altgr-intl/keymap.h | 586 ++++++++++++++++ .../host_keymap/linux/us/ats/keymap.h | 467 +++++++++++++ .../linux/us/carpalx-altgr-intl/keymap.h | 592 ++++++++++++++++ .../linux/us/carpalx-full-altgr-intl/keymap.h | 592 ++++++++++++++++ .../linux/us/carpalx-full-intl/keymap.h | 592 ++++++++++++++++ .../linux/us/carpalx-full/keymap.h | 439 ++++++++++++ .../linux/us/carpalx-intl/keymap.h | 592 ++++++++++++++++ .../host_keymap/linux/us/carpalx/keymap.h | 439 ++++++++++++ .../host_keymap/linux/us/chr/keymap.h | 299 ++++++++ .../host_keymap/linux/us/colemak/keymap.h | 582 ++++++++++++++++ .../host_keymap/linux/us/crd/keymap.h | 455 +++++++++++++ .../host_keymap/linux/us/cz_sk_de/keymap.h | 529 +++++++++++++++ .../linux/us/dvorak-alt-intl/keymap.h | 486 +++++++++++++ .../linux/us/dvorak-classic/keymap.h | 439 ++++++++++++ .../host_keymap/linux/us/dvorak-intl/keymap.h | 571 ++++++++++++++++ .../host_keymap/linux/us/dvorak-l/keymap.h | 439 ++++++++++++ .../host_keymap/linux/us/dvorak-r/keymap.h | 439 ++++++++++++ .../host_keymap/linux/us/dvorak/keymap.h | 439 ++++++++++++ .../host_keymap/linux/us/dvp/keymap.h | 439 ++++++++++++ .../host_keymap/linux/us/euro/keymap.h | 442 ++++++++++++ .../host_keymap/linux/us/hbs/keymap.h | 473 +++++++++++++ .../host_keymap/linux/us/ibm238l/keymap.h | 439 ++++++++++++ .../linux/us/intl-unicode/keymap.h | 567 ++++++++++++++++ .../host_keymap/linux/us/intl/keymap.h | 578 ++++++++++++++++ .../host_keymap/linux/us/mac/keymap.h | 595 ++++++++++++++++ .../host_keymap/linux/us/norman/keymap.h | 439 ++++++++++++ .../host_keymap/linux/us/olpc2/keymap.h | 520 ++++++++++++++ .../host_keymap/linux/us/rus/keymap.h | 416 ++++++++++++ .../host_keymap/linux/us/scn/keymap.h | 582 ++++++++++++++++ .../host_keymap/linux/us/sun_type6/keymap.h | 442 ++++++++++++ .../linux/us/workman-intl/keymap.h | 577 ++++++++++++++++ .../host_keymap/linux/us/workman/keymap.h | 439 ++++++++++++ .../host_keymap/linux/uz/latin/keymap.h | 437 ++++++++++++ .../host_keymap/linux/uz/standard/keymap.h | 375 +++++++++++ .../host_keymap/linux/vn/standard/keymap.h | 440 ++++++++++++ .../host_keymap/linux/za/standard/keymap.h | 572 ++++++++++++++++ 632 files changed, 304779 insertions(+) create mode 100644 src/kaleidoscope/host_keymap/linux/af/fa-olpc/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/af/olpc-ps/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/af/ps/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/af/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/af/uz-olpc/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/af/uz/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/al/plisi/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/al/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/am/eastern-alt/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/am/eastern/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/am/olpc-phonetic/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/am/phonetic-alt/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/am/phonetic/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/am/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/am/western/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/apl/apl2/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/apl/aplplusII/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/apl/aplx/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/apl/dyalog/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/apl/sax/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/apl/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/apl/unified/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ara/azerty/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ara/azerty_digits/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ara/basic_ext/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ara/basic_ext_digits/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ara/buckwalter/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ara/digits/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ara/mac/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ara/olpc/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ara/qwerty/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ara/qwerty_digits/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ara/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ara/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ara/uga/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/at/mac/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/at/nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/at/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/at/sundeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/au/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/az/cyrillic/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/az/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ba/alternatequotes/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ba/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ba/unicode/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ba/unicodeus/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ba/us/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/bd/probhat/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/bd/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/be/iso-alternate/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/be/nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/be/oss/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/be/oss_latin9/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/be/oss_sundeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/be/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/be/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/be/sundeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/be/wang/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/bg/bas_phonetic/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/bg/phonetic/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/bg/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/br/dvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/br/nativo-epo/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/br/nativo-us/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/br/nativo/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/br/nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/br/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/br/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/br/thinkpad/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/brai/left_hand/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/brai/right_hand/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/brai/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/bt/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/bw/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/by/latin/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/by/legacy/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/by/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ca/eng/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ca/fr-dvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ca/fr-legacy/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ca/ike/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ca/kut/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ca/multi-2gr/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ca/multi/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ca/multix/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ca/shs/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ca/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ca/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/cd/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ch/de_mac/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ch/de_nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ch/de_sundeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ch/fr/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ch/fr_mac/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ch/fr_nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ch/fr_sundeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ch/legacy/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ch/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ch/sun_type6_de/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ch/sun_type6_fr/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/cm/azerty/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/cm/dvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/cm/french/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/cm/mmuock/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/cm/qwerty/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/cm/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/cn/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/cn/tib/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/cn/tib_asciinum/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/cn/ug/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/cz/bksl/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/cz/dvorak-ucw/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/cz/qwerty/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/cz/qwerty_bksl/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/cz/rus/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/cz/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/cz/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/cz/ucw/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/T3/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/adnw/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/bone/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/bone_eszett_home/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/deadacute/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/deadgraveacute/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/deadtilde/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/dsb/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/dsb_qwertz/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/dvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/hu/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/koy/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/lld/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/mac/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/mac_nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/neo/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/neo_qwerty/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/neo_qwertz/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/pl/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/qwerty/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/ro/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/ro_nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/ru-recom/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/ru-translit/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/ru/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/sundeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/tr/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/de/us/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/dk/dvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/dk/mac/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/dk/mac_nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/dk/nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/dk/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/dk/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/dk/winkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/dz/ar/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/dz/ber/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/dz/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ee/dvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ee/nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ee/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ee/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ee/us/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/epo/legacy/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/epo/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/es/ast/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/es/cat/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/es/deadtilde/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/es/dvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/es/mac/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/es/nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/es/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/es/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/es/sundeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/es/winkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/et/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/eu/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fi/classic/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fi/das/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fi/fidvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fi/mac/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fi/nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fi/smi/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fi/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fi/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fi/winkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fo/nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fo/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fr/azerty/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fr/bepo/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fr/bepo_latin9/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fr/bre/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fr/dvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fr/geo/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fr/latin9/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fr/latin9_nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fr/latin9_sundeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fr/mac/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fr/nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fr/oci/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fr/oss/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fr/oss_latin9/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fr/oss_nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fr/oss_sundeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fr/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fr/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/fr/sundeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/gb/colemak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/gb/dvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/gb/dvorakukp/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/gb/extd/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/gb/intl/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/gb/mac/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/gb/mac_intl/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/gb/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/gb/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ge/ergonomic/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ge/mess/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ge/os/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ge/ru/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ge/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/gh/akan/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/gh/avn/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/gh/ewe/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/gh/fula/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/gh/ga/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/gh/generic/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/gh/gillbt/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/gh/hausa/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/gh/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/gn/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/gr/extended/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/gr/nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/gr/polytonic/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/gr/simple/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/gr/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/gr/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/hr/alternatequotes/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/hr/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/hr/unicode/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/hr/unicodeus/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/hr/us/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/hu/101_qwerty_comma_dead/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/hu/101_qwerty_comma_nodead/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/hu/101_qwerty_dot_dead/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/hu/101_qwerty_dot_nodead/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/hu/101_qwertz_comma_dead/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/hu/101_qwertz_comma_nodead/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/hu/101_qwertz_dot_dead/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/hu/101_qwertz_dot_nodead/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/hu/102_qwerty_comma_dead/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/hu/102_qwerty_comma_nodead/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/hu/102_qwerty_dot_dead/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/hu/102_qwerty_dot_nodead/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/hu/102_qwertz_comma_dead/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/hu/102_qwertz_comma_nodead/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/hu/102_qwertz_dot_dead/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/hu/102_qwertz_dot_nodead/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/hu/nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/hu/oldhun/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/hu/qwerty/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/hu/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/id/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ie/CloGaelach/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ie/UnicodeExpert/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ie/ogam/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ie/ogam_is434/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ie/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/il/biblical/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/il/biblicalSIL/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/il/lyx/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/il/phonetic/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/il/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/ben/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/ben_baishakhi/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/ben_bornona/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/ben_gitanjali/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/ben_inscript/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/ben_probhat/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/bolnagri/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/eeyek/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/eng/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/guj/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/guru/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/hin-kagapa/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/hin-wx/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/jhelum/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/kan-kagapa/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/kan/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/mal/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/mal_enhanced/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/mal_lalitha/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/mar-kagapa/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/olck/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/ori/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/san-kagapa/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/tam/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/tam_TAB/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/tam_TSCII/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/tam_keyboard_with_numerals/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/tam_unicode/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/tel-kagapa/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/tel-sarala/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/tel/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/urd-phonetic/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/urd-phonetic3/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/in/urd-winkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/iq/ku/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/iq/ku_alt/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/iq/ku_ara/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/iq/ku_f/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/iq/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ir/ave/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ir/ku/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ir/ku_alt/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ir/ku_ara/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ir/ku_f/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ir/pes_keypad/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ir/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/is/Sundeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/is/dvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/is/mac/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/is/mac_legacy/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/is/nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/is/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/it/fur/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/it/geo/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/it/ibm/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/it/intl/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/it/lld/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/it/mac/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/it/nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/it/scn/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/it/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/it/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/it/us/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/it/winkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/jp/OADG109A/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/jp/dvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/jp/kana/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/jp/kana86/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/jp/mac/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/jp/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/jp/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/jp/sun_type7/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/jp/sun_type7_suncompat/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ke/kik/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ke/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/kg/phonetic/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/kg/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/kh/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/kr/kr104/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/kr/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/kr/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/kz/ext/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/kz/kazrus/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/kz/ruskaz/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/kz/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/la/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/la/stea/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/latam/deadtilde/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/latam/dvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/latam/nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/latam/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/latam/sundeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lk/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lk/tam_TAB/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lk/tam_unicode/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lk/us/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lt/ibm/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lt/lekp/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lt/lekpa/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lt/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lt/std/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lt/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lt/us/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lt/us_dvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lv/adapted/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lv/apostrophe/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lv/apostrophecolemak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lv/colemak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lv/dvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lv/dvorakprogr/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lv/ergonomic/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lv/fkey/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lv/minuskeydvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lv/minuskeydvorakprogr/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lv/modern/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lv/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lv/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lv/tilde/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lv/ykeydvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/lv/ykeydvorakprogr/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ma/french/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ma/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ma/tifinagh-alt-phonetic/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ma/tifinagh-alt/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ma/tifinagh-extended-phonetic/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ma/tifinagh-extended/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ma/tifinagh-phonetic/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ma/tifinagh/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/mao/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/md/gag/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/md/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/me/cyrillic/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/me/cyrillicalternatequotes/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/me/cyrillicyz/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/me/latinalternatequotes/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/me/latinunicode/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/me/latinunicodeyz/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/me/latinyz/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/me/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/mk/nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/mk/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ml/fr-oss/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ml/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ml/us-intl/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ml/us-mac/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/mm/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/mn/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/mt/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/mt/us/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/mv/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/my/phonetic/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/my/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/nec_vndr/jp/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ng/hausa/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ng/igbo/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ng/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ng/yoruba/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/nl/mac/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/nl/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/nl/std/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/nl/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/nl/sundeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/no/colemak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/no/dvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/no/mac/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/no/mac_nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/no/nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/no/smi/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/no/smi_nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/no/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/no/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/no/winkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/np/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ph/capewell-dvorak-bay/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ph/capewell-dvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ph/capewell-qwerf2k6-bay/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ph/capewell-qwerf2k6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ph/colemak-bay/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ph/colemak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ph/dvorak-bay/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ph/dvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ph/qwerty-bay/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ph/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pk/ara/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pk/snd/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pk/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pk/urd-crulp/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pk/urd-nla/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pl/colemak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pl/csb/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pl/dvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pl/dvorak_altquotes/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pl/dvorak_quotes/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pl/dvp/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pl/glagolica/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pl/intl/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pl/legacy/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pl/qwertz/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pl/ru_phonetic_dvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pl/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pl/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pl/szl/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pt/mac/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pt/mac_nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pt/mac_sundeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pt/nativo-epo/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pt/nativo-us/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pt/nativo/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pt/nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pt/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pt/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/pt/sundeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ro/cedilla/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ro/crh_dobruja/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ro/ergonomic/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ro/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ro/std/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ro/std_cedilla/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ro/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ro/winkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/rs/alternatequotes/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/rs/combiningkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/rs/latin/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/rs/latinalternatequotes/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/rs/latinunicode/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/rs/latinunicodeyz/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/rs/latinyz/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/rs/rue/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/rs/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/rs/yz/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/bak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/chm/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/chu/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/cv/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/cv_latin/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/dos/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/kom/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/legacy/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/mac/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/os_legacy/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/os_winkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/phonetic/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/phonetic_azerty/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/phonetic_dvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/phonetic_fr/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/phonetic_winkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/prxn/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/rulemak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/ruu/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/sah/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/srp/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/tt/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/typewriter-legacy/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/typewriter/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/udm/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ru/xal/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/se/dvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/se/dvorak_a5/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/se/mac/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/se/nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/se/ovd/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/se/rus/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/se/rus_nodeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/se/smi/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/se/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/se/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/se/svdvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/se/swl/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/se/us_dvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/si/alternatequotes/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/si/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/si/us/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/sk/bksl/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/sk/qwerty/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/sk/qwerty_bksl/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/sk/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/sk/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/sn/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/sy/ku/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/sy/ku_alt/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/sy/ku_f/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/sy/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/sy/syc/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/sy/syc_phonetic/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/tg/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/th/pat/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/th/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/th/tis/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/tj/legacy/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/tj/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/tm/alt/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/tm/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/tr/alt/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/tr/crh/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/tr/crh_alt/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/tr/crh_f/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/tr/f/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/tr/intl/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/tr/ku/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/tr/ku_alt/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/tr/ku_f/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/tr/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/tr/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/tr/sundeadkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/tw/indigenous/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/tw/saisiyat/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/tw/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/tz/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ua/homophonic/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ua/legacy/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ua/phonetic/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ua/rstu/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ua/rstu_ru/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ua/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ua/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ua/typewriter/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/ua/winkeys/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/alt-intl-unicode/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/alt-intl/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/altgr-intl/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/ats/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/carpalx-altgr-intl/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/carpalx-full-altgr-intl/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/carpalx-full-intl/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/carpalx-full/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/carpalx-intl/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/carpalx/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/chr/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/colemak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/crd/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/cz_sk_de/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/dvorak-alt-intl/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/dvorak-classic/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/dvorak-intl/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/dvorak-l/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/dvorak-r/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/dvorak/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/dvp/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/euro/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/hbs/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/ibm238l/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/intl-unicode/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/intl/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/mac/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/norman/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/olpc2/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/rus/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/scn/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/sun_type6/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/workman-intl/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/us/workman/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/uz/latin/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/uz/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/vn/standard/keymap.h create mode 100644 src/kaleidoscope/host_keymap/linux/za/standard/keymap.h diff --git a/src/kaleidoscope/host_keymap/linux/af/fa-olpc/keymap.h b/src/kaleidoscope/host_keymap/linux/af/fa-olpc/keymap.h new file mode 100644 index 0000000000..41ebc1f5a5 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/af/fa-olpc/keymap.h @@ -0,0 +1,331 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: af +// variant: fa-olpc + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Comma)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('[', LSHIFT(Key_P)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_O)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Comma)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'[', LSHIFT(Key_P)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_O)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'«', LSHIFT(Key_L)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', LSHIFT(Key_K)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', LSHIFT(Key_6)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', LSHIFT(Key_Backtick)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'؋', LSHIFT(Key_4)) \ + OP(L'،', LSHIFT(Key_7)) \ + OP(L'؛', LSHIFT(Key_Quote)) \ + OP(L'؟', LSHIFT(Key_Slash)) \ + OP(L'ء', LSHIFT(Key_M)) \ + OP(L'آ', LSHIFT(Key_H)) \ + OP(L'أ', LSHIFT(Key_G)) \ + OP(L'ؤ', LSHIFT(Key_A)) \ + OP(L'إ', LSHIFT(Key_F)) \ + OP(L'ئ', LSHIFT(Key_S)) \ + OP(L'ا', Key_H) \ + OP(L'ب', Key_F) \ + OP(L'ة', LSHIFT(Key_J)) \ + OP(L'ت', Key_J) \ + OP(L'ث', Key_E) \ + OP(L'ج', Key_LeftBracket) \ + OP(L'ح', Key_P) \ + OP(L'خ', Key_O) \ + OP(L'د', Key_N) \ + OP(L'ذ', Key_B) \ + OP(L'ر', Key_V) \ + OP(L'ز', Key_C) \ + OP(L'س', Key_S) \ + OP(L'ش', Key_A) \ + OP(L'ص', Key_W) \ + OP(L'ض', Key_Q) \ + OP(L'ط', Key_X) \ + OP(L'ظ', Key_Z) \ + OP(L'ع', Key_U) \ + OP(L'غ', Key_Y) \ + OP(L'ـ', LSHIFT(Key_Minus)) \ + OP(L'ف', Key_T) \ + OP(L'ق', Key_R) \ + OP(L'ك', LSHIFT(Key_Z)) \ + OP(L'ل', Key_G) \ + OP(L'م', Key_L) \ + OP(L'ن', Key_K) \ + OP(L'ه', Key_I) \ + OP(L'و', Key_Comma) \ + OP(L'ي', LSHIFT(Key_D)) \ + OP(L'ً', LSHIFT(Key_R)) \ + OP(L'ٌ', LSHIFT(Key_W)) \ + OP(L'ٍ', LSHIFT(Key_E)) \ + OP(L'َ', LSHIFT(Key_U)) \ + OP(L'ُ', LSHIFT(Key_T)) \ + OP(L'ِ', LSHIFT(Key_Y)) \ + OP(L'ّ', LSHIFT(Key_I)) \ + OP(L'ْ', LSHIFT(Key_Q)) \ + OP(L'ٓ', LSHIFT(Key_X)) /* U+0653, XKB_KEY_Arabic_madda_above, ARABIC MADDAH ABOVE */ \ + OP(L'ٔ', LSHIFT(Key_N)) /* U+0654, XKB_KEY_Arabic_hamza_above, ARABIC HAMZA ABOVE */ \ + OP(L'٪', LSHIFT(Key_5)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', LSHIFT(Key_3)) \ + OP(L'٬', LSHIFT(Key_2)) \ + OP(L'ٰ', LSHIFT(Key_V)) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'پ', Key_M) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', Key_RightBracket) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ژ', LSHIFT(Key_C)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ک', Key_Semicolon) /* U+06a9, XKB_KEY_Arabic_keheh, ARABIC LETTER KEHEH */ \ + OP(L'گ', Key_Quote) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'ی', Key_D) /* U+06cc, XKB_KEY_Farsi_yeh, ARABIC LETTER FARSI YEH */ \ + OP(L'۰', Key_0) /* U+06f0, XKB_KEY_Farsi_0, EXTENDED ARABIC-INDIC DIGIT ZERO */ \ + OP(L'۱', Key_1) /* U+06f1, XKB_KEY_Farsi_1, EXTENDED ARABIC-INDIC DIGIT ONE */ \ + OP(L'۲', Key_2) /* U+06f2, XKB_KEY_Farsi_2, EXTENDED ARABIC-INDIC DIGIT TWO */ \ + OP(L'۳', Key_3) /* U+06f3, XKB_KEY_Farsi_3, EXTENDED ARABIC-INDIC DIGIT THREE */ \ + OP(L'۴', Key_4) /* U+06f4, XKB_KEY_Farsi_4, EXTENDED ARABIC-INDIC DIGIT FOUR */ \ + OP(L'۵', Key_5) /* U+06f5, XKB_KEY_Farsi_5, EXTENDED ARABIC-INDIC DIGIT FIVE */ \ + OP(L'۶', Key_6) /* U+06f6, XKB_KEY_Farsi_6, EXTENDED ARABIC-INDIC DIGIT SIX */ \ + OP(L'۷', Key_7) /* U+06f7, XKB_KEY_Farsi_7, EXTENDED ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'۸', Key_8) /* U+06f8, XKB_KEY_Farsi_8, EXTENDED ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'۹', Key_9) /* U+06f9, XKB_KEY_Farsi_9, EXTENDED ARABIC-INDIC DIGIT NINE */ \ + OP(L'‌', LSHIFT(Key_B)) \ + OP(L'‍', Key_Backtick) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_Arabic_gaf, Key_Quote) \ + OP(XKB_KEY_Arabic_hamza_above, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_jeh, LSHIFT(Key_C)) \ + OP(XKB_KEY_Arabic_keheh, Key_Semicolon) \ + OP(XKB_KEY_Arabic_madda_above, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_peh, Key_M) \ + OP(XKB_KEY_Arabic_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_Arabic_superscript_alef, LSHIFT(Key_V)) \ + OP(XKB_KEY_Arabic_tcheh, Key_RightBracket) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Farsi_0, Key_0) \ + OP(XKB_KEY_Farsi_1, Key_1) \ + OP(XKB_KEY_Farsi_2, Key_2) \ + OP(XKB_KEY_Farsi_3, Key_3) \ + OP(XKB_KEY_Farsi_4, Key_4) \ + OP(XKB_KEY_Farsi_5, Key_5) \ + OP(XKB_KEY_Farsi_6, Key_6) \ + OP(XKB_KEY_Farsi_7, Key_7) \ + OP(XKB_KEY_Farsi_8, Key_8) \ + OP(XKB_KEY_Farsi_9, Key_9) \ + OP(XKB_KEY_Farsi_yeh, Key_D) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_P)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_O)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_division, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_guillemotleft, LSHIFT(Key_L)) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_K)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, LSHIFT(Key_6)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace af { +namespace fa_olpc { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace fa_olpc +} // namespace af +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/af/olpc-ps/keymap.h b/src/kaleidoscope/host_keymap/linux/af/olpc-ps/keymap.h new file mode 100644 index 0000000000..34cb9e1f4a --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/af/olpc-ps/keymap.h @@ -0,0 +1,322 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: af +// variant: olpc-ps + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('[', LSHIFT(Key_RightBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_LeftBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'[', LSHIFT(Key_RightBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_LeftBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'«', LSHIFT(Key_8)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', LSHIFT(Key_7)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', LSHIFT(Key_6)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'؋', LSHIFT(Key_4)) \ + OP(L'؛', LSHIFT(Key_Quote)) \ + OP(L'؟', LSHIFT(Key_Slash)) \ + OP(L'ء', LSHIFT(Key_V)) \ + OP(L'آ', LSHIFT(Key_H)) \ + OP(L'أ', LSHIFT(Key_G)) \ + OP(L'ؤ', LSHIFT(Key_M)) \ + OP(L'ئ', LSHIFT(Key_Z)) \ + OP(L'ا', Key_H) \ + OP(L'ب', Key_F) \ + OP(L'ة', LSHIFT(Key_L)) \ + OP(L'ت', Key_J) \ + OP(L'ث', Key_E) \ + OP(L'ج', Key_LeftBracket) \ + OP(L'ح', Key_P) \ + OP(L'خ', Key_O) \ + OP(L'د', Key_N) \ + OP(L'ذ', Key_B) \ + OP(L'ر', Key_V) \ + OP(L'ز', Key_C) \ + OP(L'س', Key_S) \ + OP(L'ش', Key_A) \ + OP(L'ص', Key_W) \ + OP(L'ض', Key_Q) \ + OP(L'ط', LSHIFT(Key_X)) \ + OP(L'ظ', Key_Z) \ + OP(L'ع', Key_U) \ + OP(L'غ', Key_Y) \ + OP(L'ـ', LSHIFT(Key_Minus)) \ + OP(L'ف', Key_T) \ + OP(L'ق', Key_R) \ + OP(L'ل', Key_G) \ + OP(L'م', Key_L) \ + OP(L'ن', Key_K) \ + OP(L'ه', Key_I) \ + OP(L'و', Key_Comma) \ + OP(L'ي', LSHIFT(Key_D)) \ + OP(L'ً', LSHIFT(Key_R)) \ + OP(L'ٌ', LSHIFT(Key_W)) \ + OP(L'ٍ', LSHIFT(Key_E)) \ + OP(L'َ', LSHIFT(Key_U)) \ + OP(L'ُ', LSHIFT(Key_T)) \ + OP(L'ِ', LSHIFT(Key_Y)) \ + OP(L'ّ', LSHIFT(Key_I)) \ + OP(L'ْ', LSHIFT(Key_Q)) \ + OP(L'ٔ', LSHIFT(Key_Backtick)) /* U+0654, XKB_KEY_Arabic_hamza_above, ARABIC HAMZA ABOVE */ \ + OP(L'٪', LSHIFT(Key_5)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', LSHIFT(Key_3)) \ + OP(L'٬', LSHIFT(Key_2)) \ + OP(L'ټ', LSHIFT(Key_J)) \ + OP(L'پ', LSHIFT(Key_F)) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'ځ', LSHIFT(Key_O)) \ + OP(L'څ', LSHIFT(Key_P)) \ + OP(L'چ', Key_RightBracket) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ډ', LSHIFT(Key_N)) \ + OP(L'ړ', Key_M) \ + OP(L'ږ', Key_Period) \ + OP(L'ژ', LSHIFT(Key_C)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ښ', LSHIFT(Key_A)) \ + OP(L'ک', Key_Semicolon) /* U+06a9, XKB_KEY_Arabic_keheh, ARABIC LETTER KEHEH */ \ + OP(L'ګ', Key_Quote) \ + OP(L'ڼ', LSHIFT(Key_K)) \ + OP(L'ی', Key_D) /* U+06cc, XKB_KEY_Farsi_yeh, ARABIC LETTER FARSI YEH */ \ + OP(L'ۍ', LSHIFT(Key_S)) \ + OP(L'ې', Key_X) \ + OP(L'۰', Key_0) /* U+06f0, XKB_KEY_Farsi_0, EXTENDED ARABIC-INDIC DIGIT ZERO */ \ + OP(L'۱', Key_1) /* U+06f1, XKB_KEY_Farsi_1, EXTENDED ARABIC-INDIC DIGIT ONE */ \ + OP(L'۲', Key_2) /* U+06f2, XKB_KEY_Farsi_2, EXTENDED ARABIC-INDIC DIGIT TWO */ \ + OP(L'۳', Key_3) /* U+06f3, XKB_KEY_Farsi_3, EXTENDED ARABIC-INDIC DIGIT THREE */ \ + OP(L'۴', Key_4) /* U+06f4, XKB_KEY_Farsi_4, EXTENDED ARABIC-INDIC DIGIT FOUR */ \ + OP(L'۵', Key_5) /* U+06f5, XKB_KEY_Farsi_5, EXTENDED ARABIC-INDIC DIGIT FIVE */ \ + OP(L'۶', Key_6) /* U+06f6, XKB_KEY_Farsi_6, EXTENDED ARABIC-INDIC DIGIT SIX */ \ + OP(L'۷', Key_7) /* U+06f7, XKB_KEY_Farsi_7, EXTENDED ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'۸', Key_8) /* U+06f8, XKB_KEY_Farsi_8, EXTENDED ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'۹', Key_9) /* U+06f9, XKB_KEY_Farsi_9, EXTENDED ARABIC-INDIC DIGIT NINE */ \ + OP(L'‌', LSHIFT(Key_B)) \ + OP(L'‍', Key_Backtick) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_Arabic_hamza_above, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Arabic_jeh, LSHIFT(Key_C)) \ + OP(XKB_KEY_Arabic_keheh, Key_Semicolon) \ + OP(XKB_KEY_Arabic_peh, LSHIFT(Key_F)) \ + OP(XKB_KEY_Arabic_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_Arabic_tcheh, Key_RightBracket) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Farsi_0, Key_0) \ + OP(XKB_KEY_Farsi_1, Key_1) \ + OP(XKB_KEY_Farsi_2, Key_2) \ + OP(XKB_KEY_Farsi_3, Key_3) \ + OP(XKB_KEY_Farsi_4, Key_4) \ + OP(XKB_KEY_Farsi_5, Key_5) \ + OP(XKB_KEY_Farsi_6, Key_6) \ + OP(XKB_KEY_Farsi_7, Key_7) \ + OP(XKB_KEY_Farsi_8, Key_8) \ + OP(XKB_KEY_Farsi_9, Key_9) \ + OP(XKB_KEY_Farsi_yeh, Key_D) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_7)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, LSHIFT(Key_6)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace af { +namespace olpc_ps { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace olpc_ps +} // namespace af +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/af/ps/keymap.h b/src/kaleidoscope/host_keymap/linux/af/ps/keymap.h new file mode 100644 index 0000000000..4625c33a91 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/af/ps/keymap.h @@ -0,0 +1,427 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: af +// variant: ps + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(Key_P)) \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) \ + OP('%', RALT(Key_5)) \ + OP('&', RALT(Key_7)) \ + OP(''', RALT(Key_O)) \ + OP('(', LSHIFT(Key_0)) \ + OP(')', LSHIFT(Key_9)) \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', RALT(Key_Comma)) \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Period)) \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_X)) \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_K)) \ + OP('?', RALT(Key_Z)) \ + OP('@', RALT(Key_2)) \ + OP('[', LSHIFT(Key_RightBracket)) \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_LeftBracket)) \ + OP('^', RALT(Key_6)) \ + OP('_', RALT(Key_Minus)) \ + OP('`', RALT(Key_1)) \ + OP('{', RALT(Key_RightBracket)) \ + OP('|', RALT(Key_NonUsPound)) \ + OP('}', RALT(Key_LeftBracket)) \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(Key_P)) \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) \ + OP(L'%', RALT(Key_5)) \ + OP(L'&', RALT(Key_7)) \ + OP(L''', RALT(Key_O)) \ + OP(L'(', LSHIFT(Key_0)) \ + OP(L')', LSHIFT(Key_9)) \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', RALT(Key_Comma)) \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Period)) \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_X)) \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_K)) \ + OP(L'?', RALT(Key_Z)) \ + OP(L'@', RALT(Key_2)) \ + OP(L'[', LSHIFT(Key_RightBracket)) \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_LeftBracket)) \ + OP(L'^', RALT(Key_6)) \ + OP(L'_', RALT(Key_Minus)) \ + OP(L'`', RALT(Key_1)) \ + OP(L'{', RALT(Key_RightBracket)) \ + OP(L'|', RALT(Key_NonUsPound)) \ + OP(L'}', RALT(Key_LeftBracket)) \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', LSHIFT(Key_8)) \ + OP(L'°', RALT(Key_Q)) \ + OP(L'»', LSHIFT(Key_7)) \ + OP(L'×', LSHIFT(Key_6)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', LSHIFT(Key_Backtick)) \ + OP(L'،', LSHIFT(Key_Comma)) \ + OP(L'؛', LSHIFT(Key_Quote)) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', LSHIFT(Key_V)) \ + OP(L'آ', LSHIFT(Key_H)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_G)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', LSHIFT(Key_M)) \ + OP(L'إ', RALT(Key_B)) \ + OP(L'ئ', LSHIFT(Key_S)) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', Key_H) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_F) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', LSHIFT(Key_L)) \ + OP(L'ت', Key_J) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', Key_E) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_LeftBracket) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', Key_P) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_O) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_N) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', Key_B) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_V) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_C) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', Key_A) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', Key_W) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', Key_Q) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', LSHIFT(Key_X)) \ + OP(L'ظ', LSHIFT(Key_Z)) \ + OP(L'ع', Key_U) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', Key_Y) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_Minus)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'ف', Key_T) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_R) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', RALT(Key_Semicolon)) \ + OP(L'ل', Key_G) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_L) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_K) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_I) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_Comma) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', RALT(Key_D)) \ + OP(L'ي', LSHIFT(Key_D)) /* U+064a, XKB_KEY_Arabic_yeh, ARABIC LETTER YEH */ \ + OP(L'ً', LSHIFT(Key_R)) /* U+064b, XKB_KEY_Arabic_fathatan, ARABIC FATHATAN */ \ + OP(L'ٌ', LSHIFT(Key_W)) /* U+064c, XKB_KEY_Arabic_dammatan, ARABIC DAMMATAN */ \ + OP(L'ٍ', LSHIFT(Key_E)) /* U+064d, XKB_KEY_Arabic_kasratan, ARABIC KASRATAN */ \ + OP(L'َ', LSHIFT(Key_U)) /* U+064e, XKB_KEY_Arabic_fatha, ARABIC FATHA */ \ + OP(L'ُ', LSHIFT(Key_T)) /* U+064f, XKB_KEY_Arabic_damma, ARABIC DAMMA */ \ + OP(L'ِ', LSHIFT(Key_Y)) /* U+0650, XKB_KEY_Arabic_kasra, ARABIC KASRA */ \ + OP(L'ّ', LSHIFT(Key_I)) /* U+0651, XKB_KEY_Arabic_shadda, ARABIC SHADDA */ \ + OP(L'ْ', LSHIFT(Key_Q)) /* U+0652, XKB_KEY_Arabic_sukun, ARABIC SUKUN */ \ + OP(L'ٓ', RALT(Key_W)) /* U+0653, XKB_KEY_Arabic_madda_above, ARABIC MADDAH ABOVE */ \ + OP(L'ٔ', RALT(Key_V)) /* U+0654, XKB_KEY_Arabic_hamza_above, ARABIC HAMZA ABOVE */ \ + OP(L'ٕ', RALT(Key_C)) /* U+0655, XKB_KEY_Arabic_hamza_below, ARABIC HAMZA BELOW */ \ + OP(L'٪', LSHIFT(Key_5)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', LSHIFT(Key_3)) \ + OP(L'٬', LSHIFT(Key_2)) \ + OP(L'ٰ', RALT(Key_I)) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٱ', RALT(Key_H)) \ + OP(L'ٹ', RALT(Key_J)) /* U+0679, XKB_KEY_Arabic_tteh, ARABIC LETTER TTEH */ \ + OP(L'ټ', LSHIFT(Key_J)) \ + OP(L'پ', LSHIFT(Key_F)) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'ځ', LSHIFT(Key_O)) \ + OP(L'څ', LSHIFT(Key_P)) \ + OP(L'چ', Key_RightBracket) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ڈ', RALT(Key_N)) /* U+0688, XKB_KEY_Arabic_ddal, ARABIC LETTER DDAL */ \ + OP(L'ډ', LSHIFT(Key_N)) \ + OP(L'ڑ', RALT(Key_M)) /* U+0691, XKB_KEY_Arabic_rreh, ARABIC LETTER RREH */ \ + OP(L'ړ', Key_M) \ + OP(L'ږ', Key_Period) \ + OP(L'ژ', LSHIFT(Key_C)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ښ', LSHIFT(Key_A)) \ + OP(L'ک', Key_Semicolon) /* U+06a9, XKB_KEY_Arabic_keheh, ARABIC LETTER KEHEH */ \ + OP(L'ګ', Key_Quote) \ + OP(L'گ', RALT(Key_Quote)) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'ڷ', RALT(Key_G)) \ + OP(L'ں', RALT(Key_F)) /* U+06ba, XKB_KEY_Arabic_noon_ghunna, ARABIC LETTER NOON GHUNNA */ \ + OP(L'ڼ', LSHIFT(Key_K)) \ + OP(L'ۇ', RALT(Key_Period)) \ + OP(L'ۉ', RALT(Key_Slash)) \ + OP(L'ی', Key_D) /* U+06cc, XKB_KEY_Farsi_yeh, ARABIC LETTER FARSI YEH */ \ + OP(L'ۍ', Key_Z) \ + OP(L'ې', Key_X) \ + OP(L'ے', RALT(Key_S)) /* U+06d2, XKB_KEY_Arabic_yeh_baree, ARABIC LETTER YEH BARREE */ \ + OP(L'۰', Key_0) /* U+06f0, XKB_KEY_Farsi_0, EXTENDED ARABIC-INDIC DIGIT ZERO */ \ + OP(L'۱', Key_1) /* U+06f1, XKB_KEY_Farsi_1, EXTENDED ARABIC-INDIC DIGIT ONE */ \ + OP(L'۲', Key_2) /* U+06f2, XKB_KEY_Farsi_2, EXTENDED ARABIC-INDIC DIGIT TWO */ \ + OP(L'۳', Key_3) /* U+06f3, XKB_KEY_Farsi_3, EXTENDED ARABIC-INDIC DIGIT THREE */ \ + OP(L'۴', Key_4) /* U+06f4, XKB_KEY_Farsi_4, EXTENDED ARABIC-INDIC DIGIT FOUR */ \ + OP(L'۵', Key_5) /* U+06f5, XKB_KEY_Farsi_5, EXTENDED ARABIC-INDIC DIGIT FIVE */ \ + OP(L'۶', Key_6) /* U+06f6, XKB_KEY_Farsi_6, EXTENDED ARABIC-INDIC DIGIT SIX */ \ + OP(L'۷', Key_7) /* U+06f7, XKB_KEY_Farsi_7, EXTENDED ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'۸', Key_8) /* U+06f8, XKB_KEY_Farsi_8, EXTENDED ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'۹', Key_9) /* U+06f9, XKB_KEY_Farsi_9, EXTENDED ARABIC-INDIC DIGIT NINE */ \ + OP(L'‌', LSHIFT(Key_B)) \ + OP(L'‍', Key_Backtick) \ + OP(L'‎', RALT(Key_9)) \ + OP(L'‏', RALT(Key_0)) \ + OP(L'•', RALT(Key_8)) \ + OP(L'€', RALT(Key_E)) \ + OP(L'', LSHIFT(Key_4)) \ + OP(L'', RALT(Key_Y)) \ + OP(L'', RALT(Key_U)) \ + OP(L'﴾', RALT(Key_R)) \ + OP(L'﴿', RALT(Key_T)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_ain, Key_U) \ + OP(XKB_KEY_Arabic_alef, Key_H) \ + OP(XKB_KEY_Arabic_beh, Key_F) \ + OP(XKB_KEY_Arabic_dad, Key_Q) \ + OP(XKB_KEY_Arabic_dal, Key_N) \ + OP(XKB_KEY_Arabic_damma, LSHIFT(Key_T)) \ + OP(XKB_KEY_Arabic_dammatan, LSHIFT(Key_W)) \ + OP(XKB_KEY_Arabic_ddal, RALT(Key_N)) \ + OP(XKB_KEY_Arabic_fatha, LSHIFT(Key_U)) \ + OP(XKB_KEY_Arabic_fathatan, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_feh, Key_T) \ + OP(XKB_KEY_Arabic_gaf, RALT(Key_Quote)) \ + OP(XKB_KEY_Arabic_ghain, Key_Y) \ + OP(XKB_KEY_Arabic_ha, Key_I) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, Key_P) \ + OP(XKB_KEY_Arabic_hamza_above, RALT(Key_V)) \ + OP(XKB_KEY_Arabic_hamza_below, RALT(Key_C)) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_G)) \ + OP(XKB_KEY_Arabic_hamzaonyeh, LSHIFT(Key_S)) \ + OP(XKB_KEY_Arabic_jeem, Key_LeftBracket) \ + OP(XKB_KEY_Arabic_jeh, LSHIFT(Key_C)) \ + OP(XKB_KEY_Arabic_kasra, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Arabic_kasratan, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_keheh, Key_Semicolon) \ + OP(XKB_KEY_Arabic_khah, Key_O) \ + OP(XKB_KEY_Arabic_lam, Key_G) \ + OP(XKB_KEY_Arabic_madda_above, RALT(Key_W)) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_meem, Key_L) \ + OP(XKB_KEY_Arabic_noon, Key_K) \ + OP(XKB_KEY_Arabic_noon_ghunna, RALT(Key_F)) \ + OP(XKB_KEY_Arabic_peh, LSHIFT(Key_F)) \ + OP(XKB_KEY_Arabic_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_Arabic_qaf, Key_R) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_V) \ + OP(XKB_KEY_Arabic_rreh, RALT(Key_M)) \ + OP(XKB_KEY_Arabic_sad, Key_W) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Arabic_shadda, LSHIFT(Key_I)) \ + OP(XKB_KEY_Arabic_sheen, Key_A) \ + OP(XKB_KEY_Arabic_sukun, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Arabic_superscript_alef, RALT(Key_I)) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Arabic_tcheh, Key_RightBracket) \ + OP(XKB_KEY_Arabic_teh, Key_J) \ + OP(XKB_KEY_Arabic_thal, Key_B) \ + OP(XKB_KEY_Arabic_theh, Key_E) \ + OP(XKB_KEY_Arabic_tteh, RALT(Key_J)) \ + OP(XKB_KEY_Arabic_waw, Key_Comma) \ + OP(XKB_KEY_Arabic_yeh, LSHIFT(Key_D)) \ + OP(XKB_KEY_Arabic_yeh_baree, RALT(Key_S)) \ + OP(XKB_KEY_Arabic_zain, Key_C) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Farsi_0, Key_0) \ + OP(XKB_KEY_Farsi_1, Key_1) \ + OP(XKB_KEY_Farsi_2, Key_2) \ + OP(XKB_KEY_Farsi_3, Key_3) \ + OP(XKB_KEY_Farsi_4, Key_4) \ + OP(XKB_KEY_Farsi_5, Key_5) \ + OP(XKB_KEY_Farsi_6, Key_6) \ + OP(XKB_KEY_Farsi_7, Key_7) \ + OP(XKB_KEY_Farsi_8, Key_8) \ + OP(XKB_KEY_Farsi_9, Key_9) \ + OP(XKB_KEY_Farsi_yeh, Key_D) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_dead_tilde, RALT(Key_Backtick)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, LSHIFT(Key_6)) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace af { +namespace ps { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ps +} // namespace af +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/af/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/af/standard/keymap.h new file mode 100644 index 0000000000..9d4aeddd72 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/af/standard/keymap.h @@ -0,0 +1,441 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: af +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(Key_P)) \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) \ + OP('%', RALT(Key_5)) \ + OP('&', RALT(Key_7)) \ + OP(''', RALT(Key_O)) \ + OP('(', LSHIFT(Key_0)) \ + OP(')', LSHIFT(Key_9)) \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', RALT(Key_Comma)) \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Semicolon)) \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Comma)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', RALT(Key_NonUsPound)) \ + OP('@', RALT(Key_2)) \ + OP('[', LSHIFT(Key_P)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_O)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) \ + OP('_', RALT(Key_Minus)) \ + OP('`', RALT(Key_1)) \ + OP('{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(Key_P)) \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) \ + OP(L'%', RALT(Key_5)) \ + OP(L'&', RALT(Key_7)) \ + OP(L''', RALT(Key_O)) \ + OP(L'(', LSHIFT(Key_0)) \ + OP(L')', LSHIFT(Key_9)) \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', RALT(Key_Comma)) \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Semicolon)) \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Comma)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', RALT(Key_NonUsPound)) \ + OP(L'@', RALT(Key_2)) \ + OP(L'[', LSHIFT(Key_P)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_O)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) \ + OP(L'_', RALT(Key_Minus)) \ + OP(L'`', RALT(Key_1)) \ + OP(L'{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', LSHIFT(Key_L)) \ + OP(L'°', RALT(Key_Q)) \ + OP(L'»', LSHIFT(Key_K)) \ + OP(L'×', LSHIFT(Key_6)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', LSHIFT(Key_Backtick)) \ + OP(L'،', LSHIFT(Key_7)) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', LSHIFT(Key_Quote)) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', LSHIFT(Key_M)) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'آ', LSHIFT(Key_H)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_G)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', LSHIFT(Key_A)) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_F)) /* U+0625, XKB_KEY_Arabic_hamzaunderalef, ARABIC LETTER ALEF WITH HAMZA BELOW */ \ + OP(L'ئ', LSHIFT(Key_S)) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', Key_H) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_F) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', LSHIFT(Key_J)) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_J) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', Key_E) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_LeftBracket) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', Key_P) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_O) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_N) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', Key_B) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_V) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_C) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', Key_A) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', Key_W) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', Key_Q) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', Key_X) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', Key_Z) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', Key_U) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', Key_Y) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_Minus)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'ف', Key_T) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_R) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', LSHIFT(Key_Z)) /* U+0643, XKB_KEY_Arabic_kaf, ARABIC LETTER KAF */ \ + OP(L'ل', Key_G) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_L) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_K) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_I) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_Comma) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', RALT(Key_D)) \ + OP(L'ي', LSHIFT(Key_D)) /* U+064a, XKB_KEY_Arabic_yeh, ARABIC LETTER YEH */ \ + OP(L'ً', LSHIFT(Key_R)) /* U+064b, XKB_KEY_Arabic_fathatan, ARABIC FATHATAN */ \ + OP(L'ٌ', LSHIFT(Key_W)) /* U+064c, XKB_KEY_Arabic_dammatan, ARABIC DAMMATAN */ \ + OP(L'ٍ', LSHIFT(Key_E)) /* U+064d, XKB_KEY_Arabic_kasratan, ARABIC KASRATAN */ \ + OP(L'َ', LSHIFT(Key_U)) /* U+064e, XKB_KEY_Arabic_fatha, ARABIC FATHA */ \ + OP(L'ُ', LSHIFT(Key_T)) /* U+064f, XKB_KEY_Arabic_damma, ARABIC DAMMA */ \ + OP(L'ِ', LSHIFT(Key_Y)) /* U+0650, XKB_KEY_Arabic_kasra, ARABIC KASRA */ \ + OP(L'ّ', LSHIFT(Key_I)) /* U+0651, XKB_KEY_Arabic_shadda, ARABIC SHADDA */ \ + OP(L'ْ', LSHIFT(Key_Q)) /* U+0652, XKB_KEY_Arabic_sukun, ARABIC SUKUN */ \ + OP(L'ٓ', LSHIFT(Key_X)) /* U+0653, XKB_KEY_Arabic_madda_above, ARABIC MADDAH ABOVE */ \ + OP(L'ٔ', LSHIFT(Key_N)) /* U+0654, XKB_KEY_Arabic_hamza_above, ARABIC HAMZA ABOVE */ \ + OP(L'ٕ', RALT(Key_I)) /* U+0655, XKB_KEY_Arabic_hamza_below, ARABIC HAMZA BELOW */ \ + OP(L'٪', LSHIFT(Key_5)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', LSHIFT(Key_3)) \ + OP(L'٬', LSHIFT(Key_2)) \ + OP(L'ٰ', LSHIFT(Key_V)) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٱ', RALT(Key_H)) \ + OP(L'ٹ', RALT(Key_M)) /* U+0679, XKB_KEY_Arabic_tteh, ARABIC LETTER TTEH */ \ + OP(L'ټ', RALT(Key_J)) \ + OP(L'پ', Key_M) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'ځ', RALT(Key_LeftBracket)) \ + OP(L'څ', RALT(Key_RightBracket)) \ + OP(L'چ', Key_RightBracket) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ڈ', RALT(Key_B)) /* U+0688, XKB_KEY_Arabic_ddal, ARABIC LETTER DDAL */ \ + OP(L'ډ', RALT(Key_N)) \ + OP(L'ڑ', RALT(Key_X)) /* U+0691, XKB_KEY_Arabic_rreh, ARABIC LETTER RREH */ \ + OP(L'ړ', RALT(Key_V)) \ + OP(L'ږ', RALT(Key_C)) \ + OP(L'ژ', LSHIFT(Key_C)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ښ', RALT(Key_A)) \ + OP(L'ک', Key_Semicolon) /* U+06a9, XKB_KEY_Arabic_keheh, ARABIC LETTER KEHEH */ \ + OP(L'ګ', RALT(Key_Quote)) \ + OP(L'گ', Key_Quote) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'ڷ', RALT(Key_G)) \ + OP(L'ں', RALT(Key_L)) /* U+06ba, XKB_KEY_Arabic_noon_ghunna, ARABIC LETTER NOON GHUNNA */ \ + OP(L'ڼ', RALT(Key_K)) \ + OP(L'ۇ', RALT(Key_Period)) \ + OP(L'ۉ', RALT(Key_Slash)) \ + OP(L'ی', Key_D) /* U+06cc, XKB_KEY_Farsi_yeh, ARABIC LETTER FARSI YEH */ \ + OP(L'ۍ', RALT(Key_S)) \ + OP(L'ې', RALT(Key_F)) \ + OP(L'ے', RALT(Key_Z)) /* U+06d2, XKB_KEY_Arabic_yeh_baree, ARABIC LETTER YEH BARREE */ \ + OP(L'۰', Key_0) /* U+06f0, XKB_KEY_Farsi_0, EXTENDED ARABIC-INDIC DIGIT ZERO */ \ + OP(L'۱', Key_1) /* U+06f1, XKB_KEY_Farsi_1, EXTENDED ARABIC-INDIC DIGIT ONE */ \ + OP(L'۲', Key_2) /* U+06f2, XKB_KEY_Farsi_2, EXTENDED ARABIC-INDIC DIGIT TWO */ \ + OP(L'۳', Key_3) /* U+06f3, XKB_KEY_Farsi_3, EXTENDED ARABIC-INDIC DIGIT THREE */ \ + OP(L'۴', Key_4) /* U+06f4, XKB_KEY_Farsi_4, EXTENDED ARABIC-INDIC DIGIT FOUR */ \ + OP(L'۵', Key_5) /* U+06f5, XKB_KEY_Farsi_5, EXTENDED ARABIC-INDIC DIGIT FIVE */ \ + OP(L'۶', Key_6) /* U+06f6, XKB_KEY_Farsi_6, EXTENDED ARABIC-INDIC DIGIT SIX */ \ + OP(L'۷', Key_7) /* U+06f7, XKB_KEY_Farsi_7, EXTENDED ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'۸', Key_8) /* U+06f8, XKB_KEY_Farsi_8, EXTENDED ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'۹', Key_9) /* U+06f9, XKB_KEY_Farsi_9, EXTENDED ARABIC-INDIC DIGIT NINE */ \ + OP(L'‌', LSHIFT(Key_B)) \ + OP(L'‍', Key_Backtick) \ + OP(L'‎', RALT(Key_9)) \ + OP(L'‏', RALT(Key_0)) \ + OP(L'•', RALT(Key_8)) \ + OP(L'€', RALT(Key_E)) \ + OP(L'', LSHIFT(Key_4)) \ + OP(L'', RALT(Key_Y)) \ + OP(L'', RALT(Key_U)) \ + OP(L'﴾', RALT(Key_R)) \ + OP(L'﴿', RALT(Key_T)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_ain, Key_U) \ + OP(XKB_KEY_Arabic_alef, Key_H) \ + OP(XKB_KEY_Arabic_beh, Key_F) \ + OP(XKB_KEY_Arabic_comma, LSHIFT(Key_7)) \ + OP(XKB_KEY_Arabic_dad, Key_Q) \ + OP(XKB_KEY_Arabic_dal, Key_N) \ + OP(XKB_KEY_Arabic_damma, LSHIFT(Key_T)) \ + OP(XKB_KEY_Arabic_dammatan, LSHIFT(Key_W)) \ + OP(XKB_KEY_Arabic_ddal, RALT(Key_B)) \ + OP(XKB_KEY_Arabic_fatha, LSHIFT(Key_U)) \ + OP(XKB_KEY_Arabic_fathatan, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_feh, Key_T) \ + OP(XKB_KEY_Arabic_gaf, Key_Quote) \ + OP(XKB_KEY_Arabic_ghain, Key_Y) \ + OP(XKB_KEY_Arabic_ha, Key_I) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, Key_P) \ + OP(XKB_KEY_Arabic_hamza, LSHIFT(Key_M)) \ + OP(XKB_KEY_Arabic_hamza_above, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_hamza_below, RALT(Key_I)) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_G)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, LSHIFT(Key_A)) \ + OP(XKB_KEY_Arabic_hamzaonyeh, LSHIFT(Key_S)) \ + OP(XKB_KEY_Arabic_hamzaunderalef, LSHIFT(Key_F)) \ + OP(XKB_KEY_Arabic_jeem, Key_LeftBracket) \ + OP(XKB_KEY_Arabic_jeh, LSHIFT(Key_C)) \ + OP(XKB_KEY_Arabic_kaf, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Arabic_kasra, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Arabic_kasratan, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_keheh, Key_Semicolon) \ + OP(XKB_KEY_Arabic_khah, Key_O) \ + OP(XKB_KEY_Arabic_lam, Key_G) \ + OP(XKB_KEY_Arabic_madda_above, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_meem, Key_L) \ + OP(XKB_KEY_Arabic_noon, Key_K) \ + OP(XKB_KEY_Arabic_noon_ghunna, RALT(Key_L)) \ + OP(XKB_KEY_Arabic_peh, Key_M) \ + OP(XKB_KEY_Arabic_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_Arabic_qaf, Key_R) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_V) \ + OP(XKB_KEY_Arabic_rreh, RALT(Key_X)) \ + OP(XKB_KEY_Arabic_sad, Key_W) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Arabic_shadda, LSHIFT(Key_I)) \ + OP(XKB_KEY_Arabic_sheen, Key_A) \ + OP(XKB_KEY_Arabic_sukun, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Arabic_superscript_alef, LSHIFT(Key_V)) \ + OP(XKB_KEY_Arabic_tah, Key_X) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Arabic_tcheh, Key_RightBracket) \ + OP(XKB_KEY_Arabic_teh, Key_J) \ + OP(XKB_KEY_Arabic_tehmarbuta, LSHIFT(Key_J)) \ + OP(XKB_KEY_Arabic_thal, Key_B) \ + OP(XKB_KEY_Arabic_theh, Key_E) \ + OP(XKB_KEY_Arabic_tteh, RALT(Key_M)) \ + OP(XKB_KEY_Arabic_waw, Key_Comma) \ + OP(XKB_KEY_Arabic_yeh, LSHIFT(Key_D)) \ + OP(XKB_KEY_Arabic_yeh_baree, RALT(Key_Z)) \ + OP(XKB_KEY_Arabic_zah, Key_Z) \ + OP(XKB_KEY_Arabic_zain, Key_C) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Farsi_0, Key_0) \ + OP(XKB_KEY_Farsi_1, Key_1) \ + OP(XKB_KEY_Farsi_2, Key_2) \ + OP(XKB_KEY_Farsi_3, Key_3) \ + OP(XKB_KEY_Farsi_4, Key_4) \ + OP(XKB_KEY_Farsi_5, Key_5) \ + OP(XKB_KEY_Farsi_6, Key_6) \ + OP(XKB_KEY_Farsi_7, Key_7) \ + OP(XKB_KEY_Farsi_8, Key_8) \ + OP(XKB_KEY_Farsi_9, Key_9) \ + OP(XKB_KEY_Farsi_yeh, Key_D) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_P)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_O)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_dead_tilde, RALT(Key_Backtick)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, LSHIFT(Key_6)) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace af { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace af +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/af/uz-olpc/keymap.h b/src/kaleidoscope/host_keymap/linux/af/uz-olpc/keymap.h new file mode 100644 index 0000000000..6b2deb0ae3 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/af/uz-olpc/keymap.h @@ -0,0 +1,329 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: af +// variant: uz-olpc + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Comma)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('[', LSHIFT(Key_P)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_O)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Comma)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'[', LSHIFT(Key_P)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_O)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'«', LSHIFT(Key_L)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', LSHIFT(Key_K)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', LSHIFT(Key_6)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', LSHIFT(Key_Backtick)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'؋', LSHIFT(Key_4)) \ + OP(L'،', LSHIFT(Key_7)) \ + OP(L'؛', LSHIFT(Key_Quote)) \ + OP(L'؟', LSHIFT(Key_Slash)) \ + OP(L'ء', LSHIFT(Key_M)) \ + OP(L'آ', LSHIFT(Key_H)) \ + OP(L'أ', LSHIFT(Key_G)) \ + OP(L'ؤ', LSHIFT(Key_A)) \ + OP(L'إ', LSHIFT(Key_V)) \ + OP(L'ئ', LSHIFT(Key_S)) \ + OP(L'ا', Key_H) \ + OP(L'ب', Key_F) \ + OP(L'ة', LSHIFT(Key_J)) \ + OP(L'ت', Key_J) \ + OP(L'ث', Key_E) \ + OP(L'ج', Key_LeftBracket) \ + OP(L'ح', Key_P) \ + OP(L'خ', Key_O) \ + OP(L'د', Key_N) \ + OP(L'ذ', Key_B) \ + OP(L'ر', Key_V) \ + OP(L'ز', Key_C) \ + OP(L'س', Key_S) \ + OP(L'ش', Key_A) \ + OP(L'ص', Key_W) \ + OP(L'ض', Key_Q) \ + OP(L'ط', Key_X) \ + OP(L'ظ', Key_Z) \ + OP(L'ع', Key_U) \ + OP(L'غ', Key_Y) \ + OP(L'ـ', LSHIFT(Key_Minus)) \ + OP(L'ف', Key_T) \ + OP(L'ق', Key_R) \ + OP(L'ل', Key_G) \ + OP(L'م', Key_L) \ + OP(L'ن', Key_K) \ + OP(L'ه', Key_I) \ + OP(L'و', Key_Comma) \ + OP(L'ي', LSHIFT(Key_D)) \ + OP(L'ً', LSHIFT(Key_R)) \ + OP(L'ٌ', LSHIFT(Key_W)) \ + OP(L'ٍ', LSHIFT(Key_E)) \ + OP(L'َ', LSHIFT(Key_U)) \ + OP(L'ُ', LSHIFT(Key_T)) \ + OP(L'ِ', LSHIFT(Key_Y)) \ + OP(L'ّ', LSHIFT(Key_I)) \ + OP(L'ْ', LSHIFT(Key_Q)) \ + OP(L'ٔ', LSHIFT(Key_N)) /* U+0654, XKB_KEY_Arabic_hamza_above, ARABIC HAMZA ABOVE */ \ + OP(L'٪', LSHIFT(Key_5)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', LSHIFT(Key_3)) \ + OP(L'٬', LSHIFT(Key_2)) \ + OP(L'پ', Key_M) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', Key_RightBracket) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ژ', LSHIFT(Key_C)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ک', Key_Semicolon) /* U+06a9, XKB_KEY_Arabic_keheh, ARABIC LETTER KEHEH */ \ + OP(L'گ', Key_Quote) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'ۇ', LSHIFT(Key_X)) \ + OP(L'ۉ', LSHIFT(Key_Z)) \ + OP(L'ی', Key_D) /* U+06cc, XKB_KEY_Farsi_yeh, ARABIC LETTER FARSI YEH */ \ + OP(L'ې', LSHIFT(Key_F)) \ + OP(L'۰', Key_0) /* U+06f0, XKB_KEY_Farsi_0, EXTENDED ARABIC-INDIC DIGIT ZERO */ \ + OP(L'۱', Key_1) /* U+06f1, XKB_KEY_Farsi_1, EXTENDED ARABIC-INDIC DIGIT ONE */ \ + OP(L'۲', Key_2) /* U+06f2, XKB_KEY_Farsi_2, EXTENDED ARABIC-INDIC DIGIT TWO */ \ + OP(L'۳', Key_3) /* U+06f3, XKB_KEY_Farsi_3, EXTENDED ARABIC-INDIC DIGIT THREE */ \ + OP(L'۴', Key_4) /* U+06f4, XKB_KEY_Farsi_4, EXTENDED ARABIC-INDIC DIGIT FOUR */ \ + OP(L'۵', Key_5) /* U+06f5, XKB_KEY_Farsi_5, EXTENDED ARABIC-INDIC DIGIT FIVE */ \ + OP(L'۶', Key_6) /* U+06f6, XKB_KEY_Farsi_6, EXTENDED ARABIC-INDIC DIGIT SIX */ \ + OP(L'۷', Key_7) /* U+06f7, XKB_KEY_Farsi_7, EXTENDED ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'۸', Key_8) /* U+06f8, XKB_KEY_Farsi_8, EXTENDED ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'۹', Key_9) /* U+06f9, XKB_KEY_Farsi_9, EXTENDED ARABIC-INDIC DIGIT NINE */ \ + OP(L'‌', LSHIFT(Key_B)) \ + OP(L'‍', Key_Backtick) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_Arabic_gaf, Key_Quote) \ + OP(XKB_KEY_Arabic_hamza_above, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_jeh, LSHIFT(Key_C)) \ + OP(XKB_KEY_Arabic_keheh, Key_Semicolon) \ + OP(XKB_KEY_Arabic_peh, Key_M) \ + OP(XKB_KEY_Arabic_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_Arabic_tcheh, Key_RightBracket) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Farsi_0, Key_0) \ + OP(XKB_KEY_Farsi_1, Key_1) \ + OP(XKB_KEY_Farsi_2, Key_2) \ + OP(XKB_KEY_Farsi_3, Key_3) \ + OP(XKB_KEY_Farsi_4, Key_4) \ + OP(XKB_KEY_Farsi_5, Key_5) \ + OP(XKB_KEY_Farsi_6, Key_6) \ + OP(XKB_KEY_Farsi_7, Key_7) \ + OP(XKB_KEY_Farsi_8, Key_8) \ + OP(XKB_KEY_Farsi_9, Key_9) \ + OP(XKB_KEY_Farsi_yeh, Key_D) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_P)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_O)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_division, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_guillemotleft, LSHIFT(Key_L)) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_K)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, LSHIFT(Key_6)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace af { +namespace uz_olpc { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace uz_olpc +} // namespace af +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/af/uz/keymap.h b/src/kaleidoscope/host_keymap/linux/af/uz/keymap.h new file mode 100644 index 0000000000..0abddbd080 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/af/uz/keymap.h @@ -0,0 +1,439 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: af +// variant: uz + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(Key_P)) \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) \ + OP('%', RALT(Key_5)) \ + OP('&', RALT(Key_7)) \ + OP(''', RALT(Key_O)) \ + OP('(', LSHIFT(Key_0)) \ + OP(')', LSHIFT(Key_9)) \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', RALT(Key_Comma)) \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Semicolon)) \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Comma)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', RALT(Key_NonUsPound)) \ + OP('@', RALT(Key_2)) \ + OP('[', LSHIFT(Key_P)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_O)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) \ + OP('_', RALT(Key_Minus)) \ + OP('`', RALT(Key_1)) \ + OP('{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(Key_P)) \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) \ + OP(L'%', RALT(Key_5)) \ + OP(L'&', RALT(Key_7)) \ + OP(L''', RALT(Key_O)) \ + OP(L'(', LSHIFT(Key_0)) \ + OP(L')', LSHIFT(Key_9)) \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', RALT(Key_Comma)) \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Semicolon)) \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Comma)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', RALT(Key_NonUsPound)) \ + OP(L'@', RALT(Key_2)) \ + OP(L'[', LSHIFT(Key_P)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_O)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) \ + OP(L'_', RALT(Key_Minus)) \ + OP(L'`', RALT(Key_1)) \ + OP(L'{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', LSHIFT(Key_L)) \ + OP(L'°', RALT(Key_Q)) \ + OP(L'»', LSHIFT(Key_K)) \ + OP(L'×', LSHIFT(Key_6)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', LSHIFT(Key_Backtick)) \ + OP(L'،', LSHIFT(Key_7)) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', LSHIFT(Key_Quote)) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', LSHIFT(Key_M)) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'آ', LSHIFT(Key_H)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_G)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', LSHIFT(Key_A)) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_V)) \ + OP(L'ئ', LSHIFT(Key_S)) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', Key_H) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_F) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', LSHIFT(Key_J)) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_J) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', Key_E) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_LeftBracket) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', Key_P) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_O) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_N) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', Key_B) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_V) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_C) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', Key_A) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', Key_W) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', Key_Q) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', Key_X) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', Key_Z) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', Key_U) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', Key_Y) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_Minus)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'ف', Key_T) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_R) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', RALT(Key_F)) \ + OP(L'ل', Key_G) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_L) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_K) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_I) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_Comma) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', RALT(Key_D)) \ + OP(L'ي', LSHIFT(Key_D)) /* U+064a, XKB_KEY_Arabic_yeh, ARABIC LETTER YEH */ \ + OP(L'ً', LSHIFT(Key_R)) /* U+064b, XKB_KEY_Arabic_fathatan, ARABIC FATHATAN */ \ + OP(L'ٌ', LSHIFT(Key_W)) /* U+064c, XKB_KEY_Arabic_dammatan, ARABIC DAMMATAN */ \ + OP(L'ٍ', LSHIFT(Key_E)) /* U+064d, XKB_KEY_Arabic_kasratan, ARABIC KASRATAN */ \ + OP(L'َ', LSHIFT(Key_U)) /* U+064e, XKB_KEY_Arabic_fatha, ARABIC FATHA */ \ + OP(L'ُ', LSHIFT(Key_T)) /* U+064f, XKB_KEY_Arabic_damma, ARABIC DAMMA */ \ + OP(L'ِ', LSHIFT(Key_Y)) /* U+0650, XKB_KEY_Arabic_kasra, ARABIC KASRA */ \ + OP(L'ّ', LSHIFT(Key_I)) /* U+0651, XKB_KEY_Arabic_shadda, ARABIC SHADDA */ \ + OP(L'ْ', LSHIFT(Key_Q)) /* U+0652, XKB_KEY_Arabic_sukun, ARABIC SUKUN */ \ + OP(L'ٓ', RALT(Key_W)) /* U+0653, XKB_KEY_Arabic_madda_above, ARABIC MADDAH ABOVE */ \ + OP(L'ٔ', LSHIFT(Key_N)) /* U+0654, XKB_KEY_Arabic_hamza_above, ARABIC HAMZA ABOVE */ \ + OP(L'ٕ', RALT(Key_Slash)) /* U+0655, XKB_KEY_Arabic_hamza_below, ARABIC HAMZA BELOW */ \ + OP(L'٪', LSHIFT(Key_5)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', LSHIFT(Key_3)) \ + OP(L'٬', LSHIFT(Key_2)) \ + OP(L'ٰ', RALT(Key_I)) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٱ', RALT(Key_H)) \ + OP(L'ٹ', RALT(Key_M)) /* U+0679, XKB_KEY_Arabic_tteh, ARABIC LETTER TTEH */ \ + OP(L'ټ', RALT(Key_J)) \ + OP(L'پ', Key_M) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'ځ', RALT(Key_LeftBracket)) \ + OP(L'څ', RALT(Key_RightBracket)) \ + OP(L'چ', Key_RightBracket) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ڈ', RALT(Key_B)) /* U+0688, XKB_KEY_Arabic_ddal, ARABIC LETTER DDAL */ \ + OP(L'ډ', RALT(Key_N)) \ + OP(L'ڑ', RALT(Key_X)) /* U+0691, XKB_KEY_Arabic_rreh, ARABIC LETTER RREH */ \ + OP(L'ړ', RALT(Key_V)) \ + OP(L'ږ', RALT(Key_C)) \ + OP(L'ژ', LSHIFT(Key_C)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ښ', RALT(Key_A)) \ + OP(L'ک', Key_Semicolon) /* U+06a9, XKB_KEY_Arabic_keheh, ARABIC LETTER KEHEH */ \ + OP(L'ګ', RALT(Key_Quote)) \ + OP(L'گ', Key_Quote) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'ڷ', RALT(Key_G)) \ + OP(L'ں', RALT(Key_L)) /* U+06ba, XKB_KEY_Arabic_noon_ghunna, ARABIC LETTER NOON GHUNNA */ \ + OP(L'ڼ', RALT(Key_K)) \ + OP(L'ۇ', LSHIFT(Key_X)) \ + OP(L'ۉ', LSHIFT(Key_Z)) \ + OP(L'ی', Key_D) /* U+06cc, XKB_KEY_Farsi_yeh, ARABIC LETTER FARSI YEH */ \ + OP(L'ۍ', RALT(Key_S)) \ + OP(L'ې', LSHIFT(Key_F)) \ + OP(L'ے', RALT(Key_Z)) /* U+06d2, XKB_KEY_Arabic_yeh_baree, ARABIC LETTER YEH BARREE */ \ + OP(L'۰', Key_0) /* U+06f0, XKB_KEY_Farsi_0, EXTENDED ARABIC-INDIC DIGIT ZERO */ \ + OP(L'۱', Key_1) /* U+06f1, XKB_KEY_Farsi_1, EXTENDED ARABIC-INDIC DIGIT ONE */ \ + OP(L'۲', Key_2) /* U+06f2, XKB_KEY_Farsi_2, EXTENDED ARABIC-INDIC DIGIT TWO */ \ + OP(L'۳', Key_3) /* U+06f3, XKB_KEY_Farsi_3, EXTENDED ARABIC-INDIC DIGIT THREE */ \ + OP(L'۴', Key_4) /* U+06f4, XKB_KEY_Farsi_4, EXTENDED ARABIC-INDIC DIGIT FOUR */ \ + OP(L'۵', Key_5) /* U+06f5, XKB_KEY_Farsi_5, EXTENDED ARABIC-INDIC DIGIT FIVE */ \ + OP(L'۶', Key_6) /* U+06f6, XKB_KEY_Farsi_6, EXTENDED ARABIC-INDIC DIGIT SIX */ \ + OP(L'۷', Key_7) /* U+06f7, XKB_KEY_Farsi_7, EXTENDED ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'۸', Key_8) /* U+06f8, XKB_KEY_Farsi_8, EXTENDED ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'۹', Key_9) /* U+06f9, XKB_KEY_Farsi_9, EXTENDED ARABIC-INDIC DIGIT NINE */ \ + OP(L'‌', LSHIFT(Key_B)) \ + OP(L'‍', Key_Backtick) \ + OP(L'‎', RALT(Key_9)) \ + OP(L'‏', RALT(Key_0)) \ + OP(L'•', RALT(Key_8)) \ + OP(L'€', RALT(Key_E)) \ + OP(L'', LSHIFT(Key_4)) \ + OP(L'', RALT(Key_Y)) \ + OP(L'', RALT(Key_U)) \ + OP(L'﴾', RALT(Key_R)) \ + OP(L'﴿', RALT(Key_T)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_ain, Key_U) \ + OP(XKB_KEY_Arabic_alef, Key_H) \ + OP(XKB_KEY_Arabic_beh, Key_F) \ + OP(XKB_KEY_Arabic_comma, LSHIFT(Key_7)) \ + OP(XKB_KEY_Arabic_dad, Key_Q) \ + OP(XKB_KEY_Arabic_dal, Key_N) \ + OP(XKB_KEY_Arabic_damma, LSHIFT(Key_T)) \ + OP(XKB_KEY_Arabic_dammatan, LSHIFT(Key_W)) \ + OP(XKB_KEY_Arabic_ddal, RALT(Key_B)) \ + OP(XKB_KEY_Arabic_fatha, LSHIFT(Key_U)) \ + OP(XKB_KEY_Arabic_fathatan, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_feh, Key_T) \ + OP(XKB_KEY_Arabic_gaf, Key_Quote) \ + OP(XKB_KEY_Arabic_ghain, Key_Y) \ + OP(XKB_KEY_Arabic_ha, Key_I) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, Key_P) \ + OP(XKB_KEY_Arabic_hamza, LSHIFT(Key_M)) \ + OP(XKB_KEY_Arabic_hamza_above, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_hamza_below, RALT(Key_Slash)) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_G)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, LSHIFT(Key_A)) \ + OP(XKB_KEY_Arabic_hamzaonyeh, LSHIFT(Key_S)) \ + OP(XKB_KEY_Arabic_jeem, Key_LeftBracket) \ + OP(XKB_KEY_Arabic_jeh, LSHIFT(Key_C)) \ + OP(XKB_KEY_Arabic_kasra, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Arabic_kasratan, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_keheh, Key_Semicolon) \ + OP(XKB_KEY_Arabic_khah, Key_O) \ + OP(XKB_KEY_Arabic_lam, Key_G) \ + OP(XKB_KEY_Arabic_madda_above, RALT(Key_W)) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_meem, Key_L) \ + OP(XKB_KEY_Arabic_noon, Key_K) \ + OP(XKB_KEY_Arabic_noon_ghunna, RALT(Key_L)) \ + OP(XKB_KEY_Arabic_peh, Key_M) \ + OP(XKB_KEY_Arabic_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_Arabic_qaf, Key_R) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_V) \ + OP(XKB_KEY_Arabic_rreh, RALT(Key_X)) \ + OP(XKB_KEY_Arabic_sad, Key_W) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Arabic_shadda, LSHIFT(Key_I)) \ + OP(XKB_KEY_Arabic_sheen, Key_A) \ + OP(XKB_KEY_Arabic_sukun, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Arabic_superscript_alef, RALT(Key_I)) \ + OP(XKB_KEY_Arabic_tah, Key_X) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Arabic_tcheh, Key_RightBracket) \ + OP(XKB_KEY_Arabic_teh, Key_J) \ + OP(XKB_KEY_Arabic_tehmarbuta, LSHIFT(Key_J)) \ + OP(XKB_KEY_Arabic_thal, Key_B) \ + OP(XKB_KEY_Arabic_theh, Key_E) \ + OP(XKB_KEY_Arabic_tteh, RALT(Key_M)) \ + OP(XKB_KEY_Arabic_waw, Key_Comma) \ + OP(XKB_KEY_Arabic_yeh, LSHIFT(Key_D)) \ + OP(XKB_KEY_Arabic_yeh_baree, RALT(Key_Z)) \ + OP(XKB_KEY_Arabic_zah, Key_Z) \ + OP(XKB_KEY_Arabic_zain, Key_C) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Farsi_0, Key_0) \ + OP(XKB_KEY_Farsi_1, Key_1) \ + OP(XKB_KEY_Farsi_2, Key_2) \ + OP(XKB_KEY_Farsi_3, Key_3) \ + OP(XKB_KEY_Farsi_4, Key_4) \ + OP(XKB_KEY_Farsi_5, Key_5) \ + OP(XKB_KEY_Farsi_6, Key_6) \ + OP(XKB_KEY_Farsi_7, Key_7) \ + OP(XKB_KEY_Farsi_8, Key_8) \ + OP(XKB_KEY_Farsi_9, Key_9) \ + OP(XKB_KEY_Farsi_yeh, Key_D) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_P)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_O)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_dead_tilde, RALT(Key_Backtick)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, LSHIFT(Key_6)) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace af { +namespace uz { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace uz +} // namespace af +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/al/plisi/keymap.h b/src/kaleidoscope/host_keymap/linux/al/plisi/keymap.h new file mode 100644 index 0000000000..f059ec932f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/al/plisi/keymap.h @@ -0,0 +1,504 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: al +// variant: plisi + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', Key_RightBracket) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_9)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_0)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_8)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', Key_RightBracket) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_9)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_0)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_8)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_5)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_H)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'­', RALT(Key_Minus)) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'®', RALT(Key_Equals)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(LSHIFT(Key_M))) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_6)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ç', LSHIFT(Key_LeftBracket)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ë', LSHIFT(Key_Semicolon)) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'ç', Key_LeftBracket) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ë', Key_Semicolon) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) \ + OP(L'ʻ', RALT(Key_Comma)) \ + OP(L'̛', RALT(Key_NonUsPound)) \ + OP(L'̜', RALT(Key_RightBracket)) \ + OP(L'‌', RALT(Key_Period)) \ + OP(L'‑', RALT(Key_Slash)) \ + OP(L'–', RALT(Key_N)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_M)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'’', RALT(Key_1)) \ + OP(L'′', RALT(Key_F)) \ + OP(L'″', RALT(Key_G)) \ + OP(L'‹', RALT(Key_V)) \ + OP(L'›', RALT(Key_B)) \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'≤', RALT(Key_A)) \ + OP(L'≥', RALT(Key_S)) \ + OP(L'⌀', RALT(Key_D)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Ediaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_8)) \ + OP(XKB_KEY_bracketleft, RALT(Key_9)) \ + OP(XKB_KEY_bracketright, RALT(Key_0)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_LeftBracket) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_P)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_O)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_LeftBracket)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Semicolon)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(Key_U)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_W)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_J)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_E)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_R)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_Y)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_Q)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(Key_T)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_L)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_I)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_ediaeresis, Key_Semicolon) \ + OP(XKB_KEY_emdash, RALT(Key_M)) \ + OP(XKB_KEY_endash, RALT(Key_N)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_5)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, Key_RightBracket) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hyphen, RALT(Key_Minus)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(Key_6)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_Equals)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_H)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace al { +namespace plisi { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace plisi +} // namespace al +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/al/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/al/standard/keymap.h new file mode 100644 index 0000000000..ed72360ce3 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/al/standard/keymap.h @@ -0,0 +1,556 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: al +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_RightBracket)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_RightBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_Quote) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_RightBracket)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_RightBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_Quote) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_M)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_LeftBracket)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ë', LSHIFT(Key_Semicolon)) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_LeftBracket) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ë', Key_Semicolon) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Ediaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_RightBracket)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(Key_1)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, Key_RightBracket) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_Backtick) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_bracketleft, Key_Quote) \ + OP(XKB_KEY_bracketright, Key_NonUsPound) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_LeftBracket) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_ediaeresis, Key_Semicolon) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_M)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace al { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace al +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/am/eastern-alt/keymap.h b/src/kaleidoscope/host_keymap/linux/am/eastern-alt/keymap.h new file mode 100644 index 0000000000..85caf0800f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/am/eastern-alt/keymap.h @@ -0,0 +1,375 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: am +// variant: eastern-alt + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_5) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_7) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_4)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_5)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_6)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_5) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_7) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_4)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_5)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_6)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'«', Key_8) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', Key_9) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Ա', LSHIFT(Key_A)) /* U+0531, XKB_KEY_Armenian_AYB, ARMENIAN CAPITAL LETTER AYB */ \ + OP(L'Բ', LSHIFT(Key_B)) /* U+0532, XKB_KEY_Armenian_BEN, ARMENIAN CAPITAL LETTER BEN */ \ + OP(L'Գ', LSHIFT(Key_C)) /* U+0533, XKB_KEY_Armenian_GIM, ARMENIAN CAPITAL LETTER GIM */ \ + OP(L'Դ', LSHIFT(Key_D)) /* U+0534, XKB_KEY_Armenian_DA, ARMENIAN CAPITAL LETTER DA */ \ + OP(L'Ե', LSHIFT(Key_Y)) /* U+0535, XKB_KEY_Armenian_YECH, ARMENIAN CAPITAL LETTER ECH */ \ + OP(L'Զ', LSHIFT(Key_Z)) /* U+0536, XKB_KEY_Armenian_ZA, ARMENIAN CAPITAL LETTER ZA */ \ + OP(L'Է', LSHIFT(Key_E)) /* U+0537, XKB_KEY_Armenian_E, ARMENIAN CAPITAL LETTER EH */ \ + OP(L'Ը', LSHIFT(Key_U)) /* U+0538, XKB_KEY_Armenian_AT, ARMENIAN CAPITAL LETTER ET */ \ + OP(L'Թ', LSHIFT(Key_Semicolon)) /* U+0539, XKB_KEY_Armenian_TO, ARMENIAN CAPITAL LETTER TO */ \ + OP(L'Ժ', LSHIFT(Key_Equals)) /* U+053a, XKB_KEY_Armenian_ZHE, ARMENIAN CAPITAL LETTER ZHE */ \ + OP(L'Ի', LSHIFT(Key_I)) /* U+053b, XKB_KEY_Armenian_INI, ARMENIAN CAPITAL LETTER INI */ \ + OP(L'Լ', LSHIFT(Key_L)) /* U+053c, XKB_KEY_Armenian_LYUN, ARMENIAN CAPITAL LETTER LIWN */ \ + OP(L'Խ', LSHIFT(Key_Q)) /* U+053d, XKB_KEY_Armenian_KHE, ARMENIAN CAPITAL LETTER XEH */ \ + OP(L'Ծ', LSHIFT(Key_Slash)) /* U+053e, XKB_KEY_Armenian_TSA, ARMENIAN CAPITAL LETTER CA */ \ + OP(L'Կ', LSHIFT(Key_K)) /* U+053f, XKB_KEY_Armenian_KEN, ARMENIAN CAPITAL LETTER KEN */ \ + OP(L'Հ', LSHIFT(Key_H)) /* U+0540, XKB_KEY_Armenian_HO, ARMENIAN CAPITAL LETTER HO */ \ + OP(L'Ձ', LSHIFT(Key_2)) /* U+0541, XKB_KEY_Armenian_DZA, ARMENIAN CAPITAL LETTER JA */ \ + OP(L'Ղ', LSHIFT(Key_Period)) /* U+0542, XKB_KEY_Armenian_GHAT, ARMENIAN CAPITAL LETTER GHAD */ \ + OP(L'Ճ', LSHIFT(Key_J)) /* U+0543, XKB_KEY_Armenian_TCHE, ARMENIAN CAPITAL LETTER CHEH */ \ + OP(L'Մ', LSHIFT(Key_M)) /* U+0544, XKB_KEY_Armenian_MEN, ARMENIAN CAPITAL LETTER MEN */ \ + OP(L'Յ', LSHIFT(Key_3)) /* U+0545, XKB_KEY_Armenian_HI, ARMENIAN CAPITAL LETTER YI */ \ + OP(L'Ն', LSHIFT(Key_N)) /* U+0546, XKB_KEY_Armenian_NU, ARMENIAN CAPITAL LETTER NOW */ \ + OP(L'Շ', LSHIFT(Key_Comma)) /* U+0547, XKB_KEY_Armenian_SHA, ARMENIAN CAPITAL LETTER SHA */ \ + OP(L'Ո', LSHIFT(Key_O)) /* U+0548, XKB_KEY_Armenian_VO, ARMENIAN CAPITAL LETTER VO */ \ + OP(L'Չ', LSHIFT(Key_LeftBracket)) /* U+0549, XKB_KEY_Armenian_CHA, ARMENIAN CAPITAL LETTER CHA */ \ + OP(L'Պ', LSHIFT(Key_P)) /* U+054a, XKB_KEY_Armenian_PE, ARMENIAN CAPITAL LETTER PEH */ \ + OP(L'Ջ', LSHIFT(Key_RightBracket)) /* U+054b, XKB_KEY_Armenian_JE, ARMENIAN CAPITAL LETTER JHEH */ \ + OP(L'Ռ', LSHIFT(Key_Minus)) /* U+054c, XKB_KEY_Armenian_RA, ARMENIAN CAPITAL LETTER RA */ \ + OP(L'Ս', LSHIFT(Key_S)) /* U+054d, XKB_KEY_Armenian_SE, ARMENIAN CAPITAL LETTER SEH */ \ + OP(L'Վ', LSHIFT(Key_V)) /* U+054e, XKB_KEY_Armenian_VEV, ARMENIAN CAPITAL LETTER VEW */ \ + OP(L'Տ', LSHIFT(Key_T)) /* U+054f, XKB_KEY_Armenian_TYUN, ARMENIAN CAPITAL LETTER TIWN */ \ + OP(L'Ր', LSHIFT(Key_R)) /* U+0550, XKB_KEY_Armenian_RE, ARMENIAN CAPITAL LETTER REH */ \ + OP(L'Ց', LSHIFT(Key_X)) /* U+0551, XKB_KEY_Armenian_TSO, ARMENIAN CAPITAL LETTER CO */ \ + OP(L'Ւ', LSHIFT(Key_W)) /* U+0552, XKB_KEY_Armenian_VYUN, ARMENIAN CAPITAL LETTER YIWN */ \ + OP(L'Փ', LSHIFT(Key_Quote)) /* U+0553, XKB_KEY_Armenian_PYUR, ARMENIAN CAPITAL LETTER PIWR */ \ + OP(L'Ք', LSHIFT(Key_G)) /* U+0554, XKB_KEY_Armenian_KE, ARMENIAN CAPITAL LETTER KEH */ \ + OP(L'Օ', LSHIFT(Key_0)) /* U+0555, XKB_KEY_Armenian_O, ARMENIAN CAPITAL LETTER OH */ \ + OP(L'Ֆ', LSHIFT(Key_F)) /* U+0556, XKB_KEY_Armenian_FE, ARMENIAN CAPITAL LETTER FEH */ \ + OP(L'՛', Key_4) /* U+055b, XKB_KEY_Armenian_accent, ARMENIAN EMPHASIS MARK */ \ + OP(L'՜', LSHIFT(Key_Backtick)) /* U+055c, XKB_KEY_Armenian_exclam, ARMENIAN EXCLAMATION MARK */ \ + OP(L'՝', Key_Backtick) /* U+055d, XKB_KEY_Armenian_separation_mark, ARMENIAN COMMA */ \ + OP(L'՞', LSHIFT(Key_NonUsPound)) /* U+055e, XKB_KEY_Armenian_question, ARMENIAN QUESTION MARK */ \ + OP(L'ա', Key_A) /* U+0561, XKB_KEY_Armenian_ayb, ARMENIAN SMALL LETTER AYB */ \ + OP(L'բ', Key_B) /* U+0562, XKB_KEY_Armenian_ben, ARMENIAN SMALL LETTER BEN */ \ + OP(L'գ', Key_C) /* U+0563, XKB_KEY_Armenian_gim, ARMENIAN SMALL LETTER GIM */ \ + OP(L'դ', Key_D) /* U+0564, XKB_KEY_Armenian_da, ARMENIAN SMALL LETTER DA */ \ + OP(L'ե', Key_Y) /* U+0565, XKB_KEY_Armenian_yech, ARMENIAN SMALL LETTER ECH */ \ + OP(L'զ', Key_Z) /* U+0566, XKB_KEY_Armenian_za, ARMENIAN SMALL LETTER ZA */ \ + OP(L'է', Key_E) /* U+0567, XKB_KEY_Armenian_e, ARMENIAN SMALL LETTER EH */ \ + OP(L'ը', Key_U) /* U+0568, XKB_KEY_Armenian_at, ARMENIAN SMALL LETTER ET */ \ + OP(L'թ', Key_Semicolon) /* U+0569, XKB_KEY_Armenian_to, ARMENIAN SMALL LETTER TO */ \ + OP(L'ժ', Key_Equals) /* U+056a, XKB_KEY_Armenian_zhe, ARMENIAN SMALL LETTER ZHE */ \ + OP(L'ի', Key_I) /* U+056b, XKB_KEY_Armenian_ini, ARMENIAN SMALL LETTER INI */ \ + OP(L'լ', Key_L) /* U+056c, XKB_KEY_Armenian_lyun, ARMENIAN SMALL LETTER LIWN */ \ + OP(L'խ', Key_Q) /* U+056d, XKB_KEY_Armenian_khe, ARMENIAN SMALL LETTER XEH */ \ + OP(L'ծ', Key_Slash) /* U+056e, XKB_KEY_Armenian_tsa, ARMENIAN SMALL LETTER CA */ \ + OP(L'կ', Key_K) /* U+056f, XKB_KEY_Armenian_ken, ARMENIAN SMALL LETTER KEN */ \ + OP(L'հ', Key_H) /* U+0570, XKB_KEY_Armenian_ho, ARMENIAN SMALL LETTER HO */ \ + OP(L'ձ', Key_2) /* U+0571, XKB_KEY_Armenian_dza, ARMENIAN SMALL LETTER JA */ \ + OP(L'ղ', Key_Period) /* U+0572, XKB_KEY_Armenian_ghat, ARMENIAN SMALL LETTER GHAD */ \ + OP(L'ճ', Key_J) /* U+0573, XKB_KEY_Armenian_tche, ARMENIAN SMALL LETTER CHEH */ \ + OP(L'մ', Key_M) /* U+0574, XKB_KEY_Armenian_men, ARMENIAN SMALL LETTER MEN */ \ + OP(L'յ', Key_3) /* U+0575, XKB_KEY_Armenian_hi, ARMENIAN SMALL LETTER YI */ \ + OP(L'ն', Key_N) /* U+0576, XKB_KEY_Armenian_nu, ARMENIAN SMALL LETTER NOW */ \ + OP(L'շ', Key_Comma) /* U+0577, XKB_KEY_Armenian_sha, ARMENIAN SMALL LETTER SHA */ \ + OP(L'ո', Key_O) /* U+0578, XKB_KEY_Armenian_vo, ARMENIAN SMALL LETTER VO */ \ + OP(L'չ', Key_LeftBracket) /* U+0579, XKB_KEY_Armenian_cha, ARMENIAN SMALL LETTER CHA */ \ + OP(L'պ', Key_P) /* U+057a, XKB_KEY_Armenian_pe, ARMENIAN SMALL LETTER PEH */ \ + OP(L'ջ', Key_RightBracket) /* U+057b, XKB_KEY_Armenian_je, ARMENIAN SMALL LETTER JHEH */ \ + OP(L'ռ', Key_Minus) /* U+057c, XKB_KEY_Armenian_ra, ARMENIAN SMALL LETTER RA */ \ + OP(L'ս', Key_S) /* U+057d, XKB_KEY_Armenian_se, ARMENIAN SMALL LETTER SEH */ \ + OP(L'վ', Key_V) /* U+057e, XKB_KEY_Armenian_vev, ARMENIAN SMALL LETTER VEW */ \ + OP(L'տ', Key_T) /* U+057f, XKB_KEY_Armenian_tyun, ARMENIAN SMALL LETTER TIWN */ \ + OP(L'ր', Key_R) /* U+0580, XKB_KEY_Armenian_re, ARMENIAN SMALL LETTER REH */ \ + OP(L'ց', Key_X) /* U+0581, XKB_KEY_Armenian_tso, ARMENIAN SMALL LETTER CO */ \ + OP(L'ւ', Key_W) /* U+0582, XKB_KEY_Armenian_vyun, ARMENIAN SMALL LETTER YIWN */ \ + OP(L'փ', Key_Quote) /* U+0583, XKB_KEY_Armenian_pyur, ARMENIAN SMALL LETTER PIWR */ \ + OP(L'ք', Key_G) /* U+0584, XKB_KEY_Armenian_ke, ARMENIAN SMALL LETTER KEH */ \ + OP(L'օ', Key_0) /* U+0585, XKB_KEY_Armenian_o, ARMENIAN SMALL LETTER OH */ \ + OP(L'ֆ', Key_F) /* U+0586, XKB_KEY_Armenian_fe, ARMENIAN SMALL LETTER FEH */ \ + OP(L'և', LSHIFT(Key_7)) /* U+0587, XKB_KEY_Armenian_ligature_ew, ARMENIAN SMALL LIGATURE ECH YIWN */ \ + OP(L'։', Key_1) /* U+0589, XKB_KEY_Armenian_full_stop, ARMENIAN FULL STOP */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_Armenian_AT, LSHIFT(Key_U)) \ + OP(XKB_KEY_Armenian_AYB, LSHIFT(Key_A)) \ + OP(XKB_KEY_Armenian_BEN, LSHIFT(Key_B)) \ + OP(XKB_KEY_Armenian_CHA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Armenian_DA, LSHIFT(Key_D)) \ + OP(XKB_KEY_Armenian_DZA, LSHIFT(Key_2)) \ + OP(XKB_KEY_Armenian_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Armenian_FE, LSHIFT(Key_F)) \ + OP(XKB_KEY_Armenian_GHAT, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Armenian_GIM, LSHIFT(Key_C)) \ + OP(XKB_KEY_Armenian_HI, LSHIFT(Key_3)) \ + OP(XKB_KEY_Armenian_HO, LSHIFT(Key_H)) \ + OP(XKB_KEY_Armenian_INI, LSHIFT(Key_I)) \ + OP(XKB_KEY_Armenian_JE, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Armenian_KE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Armenian_KEN, LSHIFT(Key_K)) \ + OP(XKB_KEY_Armenian_KHE, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Armenian_LYUN, LSHIFT(Key_L)) \ + OP(XKB_KEY_Armenian_MEN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Armenian_NU, LSHIFT(Key_N)) \ + OP(XKB_KEY_Armenian_O, LSHIFT(Key_0)) \ + OP(XKB_KEY_Armenian_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Armenian_PYUR, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Armenian_RA, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Armenian_RE, LSHIFT(Key_R)) \ + OP(XKB_KEY_Armenian_SE, LSHIFT(Key_S)) \ + OP(XKB_KEY_Armenian_SHA, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Armenian_TCHE, LSHIFT(Key_J)) \ + OP(XKB_KEY_Armenian_TO, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Armenian_TSA, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Armenian_TSO, LSHIFT(Key_X)) \ + OP(XKB_KEY_Armenian_TYUN, LSHIFT(Key_T)) \ + OP(XKB_KEY_Armenian_VEV, LSHIFT(Key_V)) \ + OP(XKB_KEY_Armenian_VO, LSHIFT(Key_O)) \ + OP(XKB_KEY_Armenian_VYUN, LSHIFT(Key_W)) \ + OP(XKB_KEY_Armenian_YECH, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Armenian_ZA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Armenian_ZHE, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Armenian_accent, Key_4) \ + OP(XKB_KEY_Armenian_at, Key_U) \ + OP(XKB_KEY_Armenian_ayb, Key_A) \ + OP(XKB_KEY_Armenian_ben, Key_B) \ + OP(XKB_KEY_Armenian_cha, Key_LeftBracket) \ + OP(XKB_KEY_Armenian_da, Key_D) \ + OP(XKB_KEY_Armenian_dza, Key_2) \ + OP(XKB_KEY_Armenian_e, Key_E) \ + OP(XKB_KEY_Armenian_exclam, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Armenian_fe, Key_F) \ + OP(XKB_KEY_Armenian_full_stop, Key_1) \ + OP(XKB_KEY_Armenian_ghat, Key_Period) \ + OP(XKB_KEY_Armenian_gim, Key_C) \ + OP(XKB_KEY_Armenian_hi, Key_3) \ + OP(XKB_KEY_Armenian_ho, Key_H) \ + OP(XKB_KEY_Armenian_ini, Key_I) \ + OP(XKB_KEY_Armenian_je, Key_RightBracket) \ + OP(XKB_KEY_Armenian_ke, Key_G) \ + OP(XKB_KEY_Armenian_ken, Key_K) \ + OP(XKB_KEY_Armenian_khe, Key_Q) \ + OP(XKB_KEY_Armenian_ligature_ew, LSHIFT(Key_7)) \ + OP(XKB_KEY_Armenian_lyun, Key_L) \ + OP(XKB_KEY_Armenian_men, Key_M) \ + OP(XKB_KEY_Armenian_nu, Key_N) \ + OP(XKB_KEY_Armenian_o, Key_0) \ + OP(XKB_KEY_Armenian_pe, Key_P) \ + OP(XKB_KEY_Armenian_pyur, Key_Quote) \ + OP(XKB_KEY_Armenian_question, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Armenian_ra, Key_Minus) \ + OP(XKB_KEY_Armenian_re, Key_R) \ + OP(XKB_KEY_Armenian_se, Key_S) \ + OP(XKB_KEY_Armenian_separation_mark, Key_Backtick) \ + OP(XKB_KEY_Armenian_sha, Key_Comma) \ + OP(XKB_KEY_Armenian_tche, Key_J) \ + OP(XKB_KEY_Armenian_to, Key_Semicolon) \ + OP(XKB_KEY_Armenian_tsa, Key_Slash) \ + OP(XKB_KEY_Armenian_tso, Key_X) \ + OP(XKB_KEY_Armenian_tyun, Key_T) \ + OP(XKB_KEY_Armenian_vev, Key_V) \ + OP(XKB_KEY_Armenian_vo, Key_O) \ + OP(XKB_KEY_Armenian_vyun, Key_W) \ + OP(XKB_KEY_Armenian_yech, Key_Y) \ + OP(XKB_KEY_Armenian_za, Key_Z) \ + OP(XKB_KEY_Armenian_zhe, Key_Equals) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_4)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_5)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_6)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_comma, Key_5) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, Key_8) \ + OP(XKB_KEY_guillemotright, Key_9) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_period, Key_7) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace am { +namespace eastern_alt { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace eastern_alt +} // namespace am +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/am/eastern/keymap.h b/src/kaleidoscope/host_keymap/linux/am/eastern/keymap.h new file mode 100644 index 0000000000..ec28964956 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/am/eastern/keymap.h @@ -0,0 +1,375 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: am +// variant: eastern + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_5) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_7) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_4)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_5)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_6)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_5) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_7) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_4)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_5)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_6)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'«', Key_8) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', Key_9) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Ա', LSHIFT(Key_A)) /* U+0531, XKB_KEY_Armenian_AYB, ARMENIAN CAPITAL LETTER AYB */ \ + OP(L'Բ', LSHIFT(Key_B)) /* U+0532, XKB_KEY_Armenian_BEN, ARMENIAN CAPITAL LETTER BEN */ \ + OP(L'Գ', LSHIFT(Key_G)) /* U+0533, XKB_KEY_Armenian_GIM, ARMENIAN CAPITAL LETTER GIM */ \ + OP(L'Դ', LSHIFT(Key_D)) /* U+0534, XKB_KEY_Armenian_DA, ARMENIAN CAPITAL LETTER DA */ \ + OP(L'Ե', LSHIFT(Key_Y)) /* U+0535, XKB_KEY_Armenian_YECH, ARMENIAN CAPITAL LETTER ECH */ \ + OP(L'Զ', LSHIFT(Key_Z)) /* U+0536, XKB_KEY_Armenian_ZA, ARMENIAN CAPITAL LETTER ZA */ \ + OP(L'Է', LSHIFT(Key_E)) /* U+0537, XKB_KEY_Armenian_E, ARMENIAN CAPITAL LETTER EH */ \ + OP(L'Ը', LSHIFT(Key_U)) /* U+0538, XKB_KEY_Armenian_AT, ARMENIAN CAPITAL LETTER ET */ \ + OP(L'Թ', LSHIFT(Key_Semicolon)) /* U+0539, XKB_KEY_Armenian_TO, ARMENIAN CAPITAL LETTER TO */ \ + OP(L'Ժ', LSHIFT(Key_Equals)) /* U+053a, XKB_KEY_Armenian_ZHE, ARMENIAN CAPITAL LETTER ZHE */ \ + OP(L'Ի', LSHIFT(Key_I)) /* U+053b, XKB_KEY_Armenian_INI, ARMENIAN CAPITAL LETTER INI */ \ + OP(L'Լ', LSHIFT(Key_L)) /* U+053c, XKB_KEY_Armenian_LYUN, ARMENIAN CAPITAL LETTER LIWN */ \ + OP(L'Խ', LSHIFT(Key_Q)) /* U+053d, XKB_KEY_Armenian_KHE, ARMENIAN CAPITAL LETTER XEH */ \ + OP(L'Ծ', LSHIFT(Key_Slash)) /* U+053e, XKB_KEY_Armenian_TSA, ARMENIAN CAPITAL LETTER CA */ \ + OP(L'Կ', LSHIFT(Key_K)) /* U+053f, XKB_KEY_Armenian_KEN, ARMENIAN CAPITAL LETTER KEN */ \ + OP(L'Հ', LSHIFT(Key_H)) /* U+0540, XKB_KEY_Armenian_HO, ARMENIAN CAPITAL LETTER HO */ \ + OP(L'Ձ', LSHIFT(Key_2)) /* U+0541, XKB_KEY_Armenian_DZA, ARMENIAN CAPITAL LETTER JA */ \ + OP(L'Ղ', LSHIFT(Key_Period)) /* U+0542, XKB_KEY_Armenian_GHAT, ARMENIAN CAPITAL LETTER GHAD */ \ + OP(L'Ճ', LSHIFT(Key_J)) /* U+0543, XKB_KEY_Armenian_TCHE, ARMENIAN CAPITAL LETTER CHEH */ \ + OP(L'Մ', LSHIFT(Key_M)) /* U+0544, XKB_KEY_Armenian_MEN, ARMENIAN CAPITAL LETTER MEN */ \ + OP(L'Յ', LSHIFT(Key_3)) /* U+0545, XKB_KEY_Armenian_HI, ARMENIAN CAPITAL LETTER YI */ \ + OP(L'Ն', LSHIFT(Key_N)) /* U+0546, XKB_KEY_Armenian_NU, ARMENIAN CAPITAL LETTER NOW */ \ + OP(L'Շ', LSHIFT(Key_Comma)) /* U+0547, XKB_KEY_Armenian_SHA, ARMENIAN CAPITAL LETTER SHA */ \ + OP(L'Ո', LSHIFT(Key_O)) /* U+0548, XKB_KEY_Armenian_VO, ARMENIAN CAPITAL LETTER VO */ \ + OP(L'Չ', LSHIFT(Key_LeftBracket)) /* U+0549, XKB_KEY_Armenian_CHA, ARMENIAN CAPITAL LETTER CHA */ \ + OP(L'Պ', LSHIFT(Key_P)) /* U+054a, XKB_KEY_Armenian_PE, ARMENIAN CAPITAL LETTER PEH */ \ + OP(L'Ջ', LSHIFT(Key_RightBracket)) /* U+054b, XKB_KEY_Armenian_JE, ARMENIAN CAPITAL LETTER JHEH */ \ + OP(L'Ռ', LSHIFT(Key_Minus)) /* U+054c, XKB_KEY_Armenian_RA, ARMENIAN CAPITAL LETTER RA */ \ + OP(L'Ս', LSHIFT(Key_S)) /* U+054d, XKB_KEY_Armenian_SE, ARMENIAN CAPITAL LETTER SEH */ \ + OP(L'Վ', LSHIFT(Key_V)) /* U+054e, XKB_KEY_Armenian_VEV, ARMENIAN CAPITAL LETTER VEW */ \ + OP(L'Տ', LSHIFT(Key_T)) /* U+054f, XKB_KEY_Armenian_TYUN, ARMENIAN CAPITAL LETTER TIWN */ \ + OP(L'Ր', LSHIFT(Key_R)) /* U+0550, XKB_KEY_Armenian_RE, ARMENIAN CAPITAL LETTER REH */ \ + OP(L'Ց', LSHIFT(Key_X)) /* U+0551, XKB_KEY_Armenian_TSO, ARMENIAN CAPITAL LETTER CO */ \ + OP(L'Ւ', LSHIFT(Key_W)) /* U+0552, XKB_KEY_Armenian_VYUN, ARMENIAN CAPITAL LETTER YIWN */ \ + OP(L'Փ', LSHIFT(Key_Quote)) /* U+0553, XKB_KEY_Armenian_PYUR, ARMENIAN CAPITAL LETTER PIWR */ \ + OP(L'Ք', LSHIFT(Key_C)) /* U+0554, XKB_KEY_Armenian_KE, ARMENIAN CAPITAL LETTER KEH */ \ + OP(L'Օ', LSHIFT(Key_0)) /* U+0555, XKB_KEY_Armenian_O, ARMENIAN CAPITAL LETTER OH */ \ + OP(L'Ֆ', LSHIFT(Key_F)) /* U+0556, XKB_KEY_Armenian_FE, ARMENIAN CAPITAL LETTER FEH */ \ + OP(L'՛', Key_4) /* U+055b, XKB_KEY_Armenian_accent, ARMENIAN EMPHASIS MARK */ \ + OP(L'՜', LSHIFT(Key_Backtick)) /* U+055c, XKB_KEY_Armenian_exclam, ARMENIAN EXCLAMATION MARK */ \ + OP(L'՝', Key_Backtick) /* U+055d, XKB_KEY_Armenian_separation_mark, ARMENIAN COMMA */ \ + OP(L'՞', LSHIFT(Key_NonUsPound)) /* U+055e, XKB_KEY_Armenian_question, ARMENIAN QUESTION MARK */ \ + OP(L'ա', Key_A) /* U+0561, XKB_KEY_Armenian_ayb, ARMENIAN SMALL LETTER AYB */ \ + OP(L'բ', Key_B) /* U+0562, XKB_KEY_Armenian_ben, ARMENIAN SMALL LETTER BEN */ \ + OP(L'գ', Key_G) /* U+0563, XKB_KEY_Armenian_gim, ARMENIAN SMALL LETTER GIM */ \ + OP(L'դ', Key_D) /* U+0564, XKB_KEY_Armenian_da, ARMENIAN SMALL LETTER DA */ \ + OP(L'ե', Key_Y) /* U+0565, XKB_KEY_Armenian_yech, ARMENIAN SMALL LETTER ECH */ \ + OP(L'զ', Key_Z) /* U+0566, XKB_KEY_Armenian_za, ARMENIAN SMALL LETTER ZA */ \ + OP(L'է', Key_E) /* U+0567, XKB_KEY_Armenian_e, ARMENIAN SMALL LETTER EH */ \ + OP(L'ը', Key_U) /* U+0568, XKB_KEY_Armenian_at, ARMENIAN SMALL LETTER ET */ \ + OP(L'թ', Key_Semicolon) /* U+0569, XKB_KEY_Armenian_to, ARMENIAN SMALL LETTER TO */ \ + OP(L'ժ', Key_Equals) /* U+056a, XKB_KEY_Armenian_zhe, ARMENIAN SMALL LETTER ZHE */ \ + OP(L'ի', Key_I) /* U+056b, XKB_KEY_Armenian_ini, ARMENIAN SMALL LETTER INI */ \ + OP(L'լ', Key_L) /* U+056c, XKB_KEY_Armenian_lyun, ARMENIAN SMALL LETTER LIWN */ \ + OP(L'խ', Key_Q) /* U+056d, XKB_KEY_Armenian_khe, ARMENIAN SMALL LETTER XEH */ \ + OP(L'ծ', Key_Slash) /* U+056e, XKB_KEY_Armenian_tsa, ARMENIAN SMALL LETTER CA */ \ + OP(L'կ', Key_K) /* U+056f, XKB_KEY_Armenian_ken, ARMENIAN SMALL LETTER KEN */ \ + OP(L'հ', Key_H) /* U+0570, XKB_KEY_Armenian_ho, ARMENIAN SMALL LETTER HO */ \ + OP(L'ձ', Key_2) /* U+0571, XKB_KEY_Armenian_dza, ARMENIAN SMALL LETTER JA */ \ + OP(L'ղ', Key_Period) /* U+0572, XKB_KEY_Armenian_ghat, ARMENIAN SMALL LETTER GHAD */ \ + OP(L'ճ', Key_J) /* U+0573, XKB_KEY_Armenian_tche, ARMENIAN SMALL LETTER CHEH */ \ + OP(L'մ', Key_M) /* U+0574, XKB_KEY_Armenian_men, ARMENIAN SMALL LETTER MEN */ \ + OP(L'յ', Key_3) /* U+0575, XKB_KEY_Armenian_hi, ARMENIAN SMALL LETTER YI */ \ + OP(L'ն', Key_N) /* U+0576, XKB_KEY_Armenian_nu, ARMENIAN SMALL LETTER NOW */ \ + OP(L'շ', Key_Comma) /* U+0577, XKB_KEY_Armenian_sha, ARMENIAN SMALL LETTER SHA */ \ + OP(L'ո', Key_O) /* U+0578, XKB_KEY_Armenian_vo, ARMENIAN SMALL LETTER VO */ \ + OP(L'չ', Key_LeftBracket) /* U+0579, XKB_KEY_Armenian_cha, ARMENIAN SMALL LETTER CHA */ \ + OP(L'պ', Key_P) /* U+057a, XKB_KEY_Armenian_pe, ARMENIAN SMALL LETTER PEH */ \ + OP(L'ջ', Key_RightBracket) /* U+057b, XKB_KEY_Armenian_je, ARMENIAN SMALL LETTER JHEH */ \ + OP(L'ռ', Key_Minus) /* U+057c, XKB_KEY_Armenian_ra, ARMENIAN SMALL LETTER RA */ \ + OP(L'ս', Key_S) /* U+057d, XKB_KEY_Armenian_se, ARMENIAN SMALL LETTER SEH */ \ + OP(L'վ', Key_V) /* U+057e, XKB_KEY_Armenian_vev, ARMENIAN SMALL LETTER VEW */ \ + OP(L'տ', Key_T) /* U+057f, XKB_KEY_Armenian_tyun, ARMENIAN SMALL LETTER TIWN */ \ + OP(L'ր', Key_R) /* U+0580, XKB_KEY_Armenian_re, ARMENIAN SMALL LETTER REH */ \ + OP(L'ց', Key_X) /* U+0581, XKB_KEY_Armenian_tso, ARMENIAN SMALL LETTER CO */ \ + OP(L'ւ', Key_W) /* U+0582, XKB_KEY_Armenian_vyun, ARMENIAN SMALL LETTER YIWN */ \ + OP(L'փ', Key_Quote) /* U+0583, XKB_KEY_Armenian_pyur, ARMENIAN SMALL LETTER PIWR */ \ + OP(L'ք', Key_C) /* U+0584, XKB_KEY_Armenian_ke, ARMENIAN SMALL LETTER KEH */ \ + OP(L'օ', Key_0) /* U+0585, XKB_KEY_Armenian_o, ARMENIAN SMALL LETTER OH */ \ + OP(L'ֆ', Key_F) /* U+0586, XKB_KEY_Armenian_fe, ARMENIAN SMALL LETTER FEH */ \ + OP(L'և', LSHIFT(Key_7)) /* U+0587, XKB_KEY_Armenian_ligature_ew, ARMENIAN SMALL LIGATURE ECH YIWN */ \ + OP(L'։', Key_1) /* U+0589, XKB_KEY_Armenian_full_stop, ARMENIAN FULL STOP */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_Armenian_AT, LSHIFT(Key_U)) \ + OP(XKB_KEY_Armenian_AYB, LSHIFT(Key_A)) \ + OP(XKB_KEY_Armenian_BEN, LSHIFT(Key_B)) \ + OP(XKB_KEY_Armenian_CHA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Armenian_DA, LSHIFT(Key_D)) \ + OP(XKB_KEY_Armenian_DZA, LSHIFT(Key_2)) \ + OP(XKB_KEY_Armenian_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Armenian_FE, LSHIFT(Key_F)) \ + OP(XKB_KEY_Armenian_GHAT, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Armenian_GIM, LSHIFT(Key_G)) \ + OP(XKB_KEY_Armenian_HI, LSHIFT(Key_3)) \ + OP(XKB_KEY_Armenian_HO, LSHIFT(Key_H)) \ + OP(XKB_KEY_Armenian_INI, LSHIFT(Key_I)) \ + OP(XKB_KEY_Armenian_JE, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Armenian_KE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Armenian_KEN, LSHIFT(Key_K)) \ + OP(XKB_KEY_Armenian_KHE, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Armenian_LYUN, LSHIFT(Key_L)) \ + OP(XKB_KEY_Armenian_MEN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Armenian_NU, LSHIFT(Key_N)) \ + OP(XKB_KEY_Armenian_O, LSHIFT(Key_0)) \ + OP(XKB_KEY_Armenian_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Armenian_PYUR, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Armenian_RA, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Armenian_RE, LSHIFT(Key_R)) \ + OP(XKB_KEY_Armenian_SE, LSHIFT(Key_S)) \ + OP(XKB_KEY_Armenian_SHA, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Armenian_TCHE, LSHIFT(Key_J)) \ + OP(XKB_KEY_Armenian_TO, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Armenian_TSA, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Armenian_TSO, LSHIFT(Key_X)) \ + OP(XKB_KEY_Armenian_TYUN, LSHIFT(Key_T)) \ + OP(XKB_KEY_Armenian_VEV, LSHIFT(Key_V)) \ + OP(XKB_KEY_Armenian_VO, LSHIFT(Key_O)) \ + OP(XKB_KEY_Armenian_VYUN, LSHIFT(Key_W)) \ + OP(XKB_KEY_Armenian_YECH, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Armenian_ZA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Armenian_ZHE, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Armenian_accent, Key_4) \ + OP(XKB_KEY_Armenian_at, Key_U) \ + OP(XKB_KEY_Armenian_ayb, Key_A) \ + OP(XKB_KEY_Armenian_ben, Key_B) \ + OP(XKB_KEY_Armenian_cha, Key_LeftBracket) \ + OP(XKB_KEY_Armenian_da, Key_D) \ + OP(XKB_KEY_Armenian_dza, Key_2) \ + OP(XKB_KEY_Armenian_e, Key_E) \ + OP(XKB_KEY_Armenian_exclam, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Armenian_fe, Key_F) \ + OP(XKB_KEY_Armenian_full_stop, Key_1) \ + OP(XKB_KEY_Armenian_ghat, Key_Period) \ + OP(XKB_KEY_Armenian_gim, Key_G) \ + OP(XKB_KEY_Armenian_hi, Key_3) \ + OP(XKB_KEY_Armenian_ho, Key_H) \ + OP(XKB_KEY_Armenian_ini, Key_I) \ + OP(XKB_KEY_Armenian_je, Key_RightBracket) \ + OP(XKB_KEY_Armenian_ke, Key_C) \ + OP(XKB_KEY_Armenian_ken, Key_K) \ + OP(XKB_KEY_Armenian_khe, Key_Q) \ + OP(XKB_KEY_Armenian_ligature_ew, LSHIFT(Key_7)) \ + OP(XKB_KEY_Armenian_lyun, Key_L) \ + OP(XKB_KEY_Armenian_men, Key_M) \ + OP(XKB_KEY_Armenian_nu, Key_N) \ + OP(XKB_KEY_Armenian_o, Key_0) \ + OP(XKB_KEY_Armenian_pe, Key_P) \ + OP(XKB_KEY_Armenian_pyur, Key_Quote) \ + OP(XKB_KEY_Armenian_question, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Armenian_ra, Key_Minus) \ + OP(XKB_KEY_Armenian_re, Key_R) \ + OP(XKB_KEY_Armenian_se, Key_S) \ + OP(XKB_KEY_Armenian_separation_mark, Key_Backtick) \ + OP(XKB_KEY_Armenian_sha, Key_Comma) \ + OP(XKB_KEY_Armenian_tche, Key_J) \ + OP(XKB_KEY_Armenian_to, Key_Semicolon) \ + OP(XKB_KEY_Armenian_tsa, Key_Slash) \ + OP(XKB_KEY_Armenian_tso, Key_X) \ + OP(XKB_KEY_Armenian_tyun, Key_T) \ + OP(XKB_KEY_Armenian_vev, Key_V) \ + OP(XKB_KEY_Armenian_vo, Key_O) \ + OP(XKB_KEY_Armenian_vyun, Key_W) \ + OP(XKB_KEY_Armenian_yech, Key_Y) \ + OP(XKB_KEY_Armenian_za, Key_Z) \ + OP(XKB_KEY_Armenian_zhe, Key_Equals) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_4)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_5)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_6)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_comma, Key_5) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, Key_8) \ + OP(XKB_KEY_guillemotright, Key_9) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_period, Key_7) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace am { +namespace eastern { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace eastern +} // namespace am +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/am/olpc-phonetic/keymap.h b/src/kaleidoscope/host_keymap/linux/am/olpc-phonetic/keymap.h new file mode 100644 index 0000000000..bce62be54e --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/am/olpc-phonetic/keymap.h @@ -0,0 +1,368 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: am +// variant: olpc-phonetic + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('"', LSHIFT(Key_Quote)) \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_Slash) \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('?', Key_NonUsBackslashAndPipe) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'"', LSHIFT(Key_Quote)) \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_Slash) \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'?', Key_NonUsBackslashAndPipe) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'«', LSHIFT(Key_Comma)) \ + OP(L'»', LSHIFT(Key_Period)) \ + OP(L'Ա', LSHIFT(Key_A)) /* U+0531, XKB_KEY_Armenian_AYB, ARMENIAN CAPITAL LETTER AYB */ \ + OP(L'Բ', LSHIFT(Key_B)) /* U+0532, XKB_KEY_Armenian_BEN, ARMENIAN CAPITAL LETTER BEN */ \ + OP(L'Գ', LSHIFT(Key_G)) /* U+0533, XKB_KEY_Armenian_GIM, ARMENIAN CAPITAL LETTER GIM */ \ + OP(L'Դ', LSHIFT(Key_D)) /* U+0534, XKB_KEY_Armenian_DA, ARMENIAN CAPITAL LETTER DA */ \ + OP(L'Ե', LSHIFT(Key_E)) /* U+0535, XKB_KEY_Armenian_YECH, ARMENIAN CAPITAL LETTER ECH */ \ + OP(L'Զ', LSHIFT(Key_Z)) /* U+0536, XKB_KEY_Armenian_ZA, ARMENIAN CAPITAL LETTER ZA */ \ + OP(L'Է', LSHIFT(Key_1)) /* U+0537, XKB_KEY_Armenian_E, ARMENIAN CAPITAL LETTER EH */ \ + OP(L'Ը', LSHIFT(Key_Y)) /* U+0538, XKB_KEY_Armenian_AT, ARMENIAN CAPITAL LETTER ET */ \ + OP(L'Թ', LSHIFT(Key_2)) /* U+0539, XKB_KEY_Armenian_TO, ARMENIAN CAPITAL LETTER TO */ \ + OP(L'Ժ', LSHIFT(Key_Equals)) /* U+053a, XKB_KEY_Armenian_ZHE, ARMENIAN CAPITAL LETTER ZHE */ \ + OP(L'Ի', LSHIFT(Key_I)) /* U+053b, XKB_KEY_Armenian_INI, ARMENIAN CAPITAL LETTER INI */ \ + OP(L'Լ', LSHIFT(Key_L)) /* U+053c, XKB_KEY_Armenian_LYUN, ARMENIAN CAPITAL LETTER LIWN */ \ + OP(L'Խ', LSHIFT(Key_LeftBracket)) /* U+053d, XKB_KEY_Armenian_KHE, ARMENIAN CAPITAL LETTER XEH */ \ + OP(L'Ծ', LSHIFT(Key_RightBracket)) /* U+053e, XKB_KEY_Armenian_TSA, ARMENIAN CAPITAL LETTER CA */ \ + OP(L'Կ', LSHIFT(Key_K)) /* U+053f, XKB_KEY_Armenian_KEN, ARMENIAN CAPITAL LETTER KEN */ \ + OP(L'Հ', LSHIFT(Key_H)) /* U+0540, XKB_KEY_Armenian_HO, ARMENIAN CAPITAL LETTER HO */ \ + OP(L'Ձ', LSHIFT(Key_4)) /* U+0541, XKB_KEY_Armenian_DZA, ARMENIAN CAPITAL LETTER JA */ \ + OP(L'Ղ', LSHIFT(Key_X)) /* U+0542, XKB_KEY_Armenian_GHAT, ARMENIAN CAPITAL LETTER GHAD */ \ + OP(L'Ճ', LSHIFT(Key_0)) /* U+0543, XKB_KEY_Armenian_TCHE, ARMENIAN CAPITAL LETTER CHEH */ \ + OP(L'Մ', LSHIFT(Key_M)) /* U+0544, XKB_KEY_Armenian_MEN, ARMENIAN CAPITAL LETTER MEN */ \ + OP(L'Յ', LSHIFT(Key_J)) /* U+0545, XKB_KEY_Armenian_HI, ARMENIAN CAPITAL LETTER YI */ \ + OP(L'Ն', LSHIFT(Key_N)) /* U+0546, XKB_KEY_Armenian_NU, ARMENIAN CAPITAL LETTER NOW */ \ + OP(L'Շ', LSHIFT(Key_NonUsPound)) /* U+0547, XKB_KEY_Armenian_SHA, ARMENIAN CAPITAL LETTER SHA */ \ + OP(L'Ո', LSHIFT(Key_W)) /* U+0548, XKB_KEY_Armenian_VO, ARMENIAN CAPITAL LETTER VO */ \ + OP(L'Չ', LSHIFT(Key_9)) /* U+0549, XKB_KEY_Armenian_CHA, ARMENIAN CAPITAL LETTER CHA */ \ + OP(L'Պ', LSHIFT(Key_P)) /* U+054a, XKB_KEY_Armenian_PE, ARMENIAN CAPITAL LETTER PEH */ \ + OP(L'Ջ', LSHIFT(Key_5)) /* U+054b, XKB_KEY_Armenian_JE, ARMENIAN CAPITAL LETTER JHEH */ \ + OP(L'Ռ', LSHIFT(Key_R)) /* U+054c, XKB_KEY_Armenian_RA, ARMENIAN CAPITAL LETTER RA */ \ + OP(L'Ս', LSHIFT(Key_S)) /* U+054d, XKB_KEY_Armenian_SE, ARMENIAN CAPITAL LETTER SEH */ \ + OP(L'Վ', LSHIFT(Key_V)) /* U+054e, XKB_KEY_Armenian_VEV, ARMENIAN CAPITAL LETTER VEW */ \ + OP(L'Տ', LSHIFT(Key_T)) /* U+054f, XKB_KEY_Armenian_TYUN, ARMENIAN CAPITAL LETTER TIWN */ \ + OP(L'Ր', LSHIFT(Key_8)) /* U+0550, XKB_KEY_Armenian_RE, ARMENIAN CAPITAL LETTER REH */ \ + OP(L'Ց', LSHIFT(Key_C)) /* U+0551, XKB_KEY_Armenian_TSO, ARMENIAN CAPITAL LETTER CO */ \ + OP(L'Ւ', LSHIFT(Key_6)) /* U+0552, XKB_KEY_Armenian_VYUN, ARMENIAN CAPITAL LETTER YIWN */ \ + OP(L'Փ', LSHIFT(Key_3)) /* U+0553, XKB_KEY_Armenian_PYUR, ARMENIAN CAPITAL LETTER PIWR */ \ + OP(L'Ք', LSHIFT(Key_Q)) /* U+0554, XKB_KEY_Armenian_KE, ARMENIAN CAPITAL LETTER KEH */ \ + OP(L'Օ', LSHIFT(Key_O)) /* U+0555, XKB_KEY_Armenian_O, ARMENIAN CAPITAL LETTER OH */ \ + OP(L'Ֆ', LSHIFT(Key_F)) /* U+0556, XKB_KEY_Armenian_FE, ARMENIAN CAPITAL LETTER FEH */ \ + OP(L'՛', Key_Quote) /* U+055b, XKB_KEY_Armenian_accent, ARMENIAN EMPHASIS MARK */ \ + OP(L'՜', LSHIFT(Key_Backtick)) /* U+055c, XKB_KEY_Armenian_exclam, ARMENIAN EXCLAMATION MARK */ \ + OP(L'՝', Key_Backtick) /* U+055d, XKB_KEY_Armenian_separation_mark, ARMENIAN COMMA */ \ + OP(L'՞', LSHIFT(Key_Slash)) /* U+055e, XKB_KEY_Armenian_question, ARMENIAN QUESTION MARK */ \ + OP(L'ա', Key_A) /* U+0561, XKB_KEY_Armenian_ayb, ARMENIAN SMALL LETTER AYB */ \ + OP(L'բ', Key_B) /* U+0562, XKB_KEY_Armenian_ben, ARMENIAN SMALL LETTER BEN */ \ + OP(L'գ', Key_G) /* U+0563, XKB_KEY_Armenian_gim, ARMENIAN SMALL LETTER GIM */ \ + OP(L'դ', Key_D) /* U+0564, XKB_KEY_Armenian_da, ARMENIAN SMALL LETTER DA */ \ + OP(L'ե', Key_E) /* U+0565, XKB_KEY_Armenian_yech, ARMENIAN SMALL LETTER ECH */ \ + OP(L'զ', Key_Z) /* U+0566, XKB_KEY_Armenian_za, ARMENIAN SMALL LETTER ZA */ \ + OP(L'է', Key_1) /* U+0567, XKB_KEY_Armenian_e, ARMENIAN SMALL LETTER EH */ \ + OP(L'ը', Key_Y) /* U+0568, XKB_KEY_Armenian_at, ARMENIAN SMALL LETTER ET */ \ + OP(L'թ', Key_2) /* U+0569, XKB_KEY_Armenian_to, ARMENIAN SMALL LETTER TO */ \ + OP(L'ժ', Key_Equals) /* U+056a, XKB_KEY_Armenian_zhe, ARMENIAN SMALL LETTER ZHE */ \ + OP(L'ի', Key_I) /* U+056b, XKB_KEY_Armenian_ini, ARMENIAN SMALL LETTER INI */ \ + OP(L'լ', Key_L) /* U+056c, XKB_KEY_Armenian_lyun, ARMENIAN SMALL LETTER LIWN */ \ + OP(L'խ', Key_LeftBracket) /* U+056d, XKB_KEY_Armenian_khe, ARMENIAN SMALL LETTER XEH */ \ + OP(L'ծ', Key_RightBracket) /* U+056e, XKB_KEY_Armenian_tsa, ARMENIAN SMALL LETTER CA */ \ + OP(L'կ', Key_K) /* U+056f, XKB_KEY_Armenian_ken, ARMENIAN SMALL LETTER KEN */ \ + OP(L'հ', Key_H) /* U+0570, XKB_KEY_Armenian_ho, ARMENIAN SMALL LETTER HO */ \ + OP(L'ձ', Key_4) /* U+0571, XKB_KEY_Armenian_dza, ARMENIAN SMALL LETTER JA */ \ + OP(L'ղ', Key_X) /* U+0572, XKB_KEY_Armenian_ghat, ARMENIAN SMALL LETTER GHAD */ \ + OP(L'ճ', Key_0) /* U+0573, XKB_KEY_Armenian_tche, ARMENIAN SMALL LETTER CHEH */ \ + OP(L'մ', Key_M) /* U+0574, XKB_KEY_Armenian_men, ARMENIAN SMALL LETTER MEN */ \ + OP(L'յ', Key_J) /* U+0575, XKB_KEY_Armenian_hi, ARMENIAN SMALL LETTER YI */ \ + OP(L'ն', Key_N) /* U+0576, XKB_KEY_Armenian_nu, ARMENIAN SMALL LETTER NOW */ \ + OP(L'շ', Key_NonUsPound) /* U+0577, XKB_KEY_Armenian_sha, ARMENIAN SMALL LETTER SHA */ \ + OP(L'ո', Key_W) /* U+0578, XKB_KEY_Armenian_vo, ARMENIAN SMALL LETTER VO */ \ + OP(L'չ', Key_9) /* U+0579, XKB_KEY_Armenian_cha, ARMENIAN SMALL LETTER CHA */ \ + OP(L'պ', Key_P) /* U+057a, XKB_KEY_Armenian_pe, ARMENIAN SMALL LETTER PEH */ \ + OP(L'ջ', Key_5) /* U+057b, XKB_KEY_Armenian_je, ARMENIAN SMALL LETTER JHEH */ \ + OP(L'ռ', Key_R) /* U+057c, XKB_KEY_Armenian_ra, ARMENIAN SMALL LETTER RA */ \ + OP(L'ս', Key_S) /* U+057d, XKB_KEY_Armenian_se, ARMENIAN SMALL LETTER SEH */ \ + OP(L'վ', Key_V) /* U+057e, XKB_KEY_Armenian_vev, ARMENIAN SMALL LETTER VEW */ \ + OP(L'տ', Key_T) /* U+057f, XKB_KEY_Armenian_tyun, ARMENIAN SMALL LETTER TIWN */ \ + OP(L'ր', Key_8) /* U+0580, XKB_KEY_Armenian_re, ARMENIAN SMALL LETTER REH */ \ + OP(L'ց', Key_C) /* U+0581, XKB_KEY_Armenian_tso, ARMENIAN SMALL LETTER CO */ \ + OP(L'ւ', Key_6) /* U+0582, XKB_KEY_Armenian_vyun, ARMENIAN SMALL LETTER YIWN */ \ + OP(L'փ', Key_3) /* U+0583, XKB_KEY_Armenian_pyur, ARMENIAN SMALL LETTER PIWR */ \ + OP(L'ք', Key_Q) /* U+0584, XKB_KEY_Armenian_ke, ARMENIAN SMALL LETTER KEH */ \ + OP(L'օ', Key_O) /* U+0585, XKB_KEY_Armenian_o, ARMENIAN SMALL LETTER OH */ \ + OP(L'ֆ', Key_F) /* U+0586, XKB_KEY_Armenian_fe, ARMENIAN SMALL LETTER FEH */ \ + OP(L'և', Key_7) /* U+0587, XKB_KEY_Armenian_ligature_ew, ARMENIAN SMALL LIGATURE ECH YIWN */ \ + OP(L'։', LSHIFT(Key_Semicolon)) /* U+0589, XKB_KEY_Armenian_full_stop, ARMENIAN FULL STOP */ \ + OP(L'֊', Key_Minus) /* U+058a, XKB_KEY_Armenian_hyphen, ARMENIAN HYPHEN */ \ + OP(L'֏', LSHIFT(Key_7)) \ + OP(L'―', LSHIFT(Key_Minus)) \ + OP(L'․', Key_Period) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_Armenian_AT, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Armenian_AYB, LSHIFT(Key_A)) \ + OP(XKB_KEY_Armenian_BEN, LSHIFT(Key_B)) \ + OP(XKB_KEY_Armenian_CHA, LSHIFT(Key_9)) \ + OP(XKB_KEY_Armenian_DA, LSHIFT(Key_D)) \ + OP(XKB_KEY_Armenian_DZA, LSHIFT(Key_4)) \ + OP(XKB_KEY_Armenian_E, LSHIFT(Key_1)) \ + OP(XKB_KEY_Armenian_FE, LSHIFT(Key_F)) \ + OP(XKB_KEY_Armenian_GHAT, LSHIFT(Key_X)) \ + OP(XKB_KEY_Armenian_GIM, LSHIFT(Key_G)) \ + OP(XKB_KEY_Armenian_HI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Armenian_HO, LSHIFT(Key_H)) \ + OP(XKB_KEY_Armenian_INI, LSHIFT(Key_I)) \ + OP(XKB_KEY_Armenian_JE, LSHIFT(Key_5)) \ + OP(XKB_KEY_Armenian_KE, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Armenian_KEN, LSHIFT(Key_K)) \ + OP(XKB_KEY_Armenian_KHE, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Armenian_LYUN, LSHIFT(Key_L)) \ + OP(XKB_KEY_Armenian_MEN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Armenian_NU, LSHIFT(Key_N)) \ + OP(XKB_KEY_Armenian_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Armenian_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Armenian_PYUR, LSHIFT(Key_3)) \ + OP(XKB_KEY_Armenian_RA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Armenian_RE, LSHIFT(Key_8)) \ + OP(XKB_KEY_Armenian_SE, LSHIFT(Key_S)) \ + OP(XKB_KEY_Armenian_SHA, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Armenian_TCHE, LSHIFT(Key_0)) \ + OP(XKB_KEY_Armenian_TO, LSHIFT(Key_2)) \ + OP(XKB_KEY_Armenian_TSA, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Armenian_TSO, LSHIFT(Key_C)) \ + OP(XKB_KEY_Armenian_TYUN, LSHIFT(Key_T)) \ + OP(XKB_KEY_Armenian_VEV, LSHIFT(Key_V)) \ + OP(XKB_KEY_Armenian_VO, LSHIFT(Key_W)) \ + OP(XKB_KEY_Armenian_VYUN, LSHIFT(Key_6)) \ + OP(XKB_KEY_Armenian_YECH, LSHIFT(Key_E)) \ + OP(XKB_KEY_Armenian_ZA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Armenian_ZHE, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Armenian_accent, Key_Quote) \ + OP(XKB_KEY_Armenian_at, Key_Y) \ + OP(XKB_KEY_Armenian_ayb, Key_A) \ + OP(XKB_KEY_Armenian_ben, Key_B) \ + OP(XKB_KEY_Armenian_cha, Key_9) \ + OP(XKB_KEY_Armenian_da, Key_D) \ + OP(XKB_KEY_Armenian_dza, Key_4) \ + OP(XKB_KEY_Armenian_e, Key_1) \ + OP(XKB_KEY_Armenian_exclam, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Armenian_fe, Key_F) \ + OP(XKB_KEY_Armenian_full_stop, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Armenian_ghat, Key_X) \ + OP(XKB_KEY_Armenian_gim, Key_G) \ + OP(XKB_KEY_Armenian_hi, Key_J) \ + OP(XKB_KEY_Armenian_ho, Key_H) \ + OP(XKB_KEY_Armenian_hyphen, Key_Minus) \ + OP(XKB_KEY_Armenian_ini, Key_I) \ + OP(XKB_KEY_Armenian_je, Key_5) \ + OP(XKB_KEY_Armenian_ke, Key_Q) \ + OP(XKB_KEY_Armenian_ken, Key_K) \ + OP(XKB_KEY_Armenian_khe, Key_LeftBracket) \ + OP(XKB_KEY_Armenian_ligature_ew, Key_7) \ + OP(XKB_KEY_Armenian_lyun, Key_L) \ + OP(XKB_KEY_Armenian_men, Key_M) \ + OP(XKB_KEY_Armenian_nu, Key_N) \ + OP(XKB_KEY_Armenian_o, Key_O) \ + OP(XKB_KEY_Armenian_pe, Key_P) \ + OP(XKB_KEY_Armenian_pyur, Key_3) \ + OP(XKB_KEY_Armenian_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Armenian_ra, Key_R) \ + OP(XKB_KEY_Armenian_re, Key_8) \ + OP(XKB_KEY_Armenian_se, Key_S) \ + OP(XKB_KEY_Armenian_separation_mark, Key_Backtick) \ + OP(XKB_KEY_Armenian_sha, Key_NonUsPound) \ + OP(XKB_KEY_Armenian_tche, Key_0) \ + OP(XKB_KEY_Armenian_to, Key_2) \ + OP(XKB_KEY_Armenian_tsa, Key_RightBracket) \ + OP(XKB_KEY_Armenian_tso, Key_C) \ + OP(XKB_KEY_Armenian_tyun, Key_T) \ + OP(XKB_KEY_Armenian_vev, Key_V) \ + OP(XKB_KEY_Armenian_vo, Key_W) \ + OP(XKB_KEY_Armenian_vyun, Key_6) \ + OP(XKB_KEY_Armenian_yech, Key_E) \ + OP(XKB_KEY_Armenian_za, Key_Z) \ + OP(XKB_KEY_Armenian_zhe, Key_Equals) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_question, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace am { +namespace olpc_phonetic { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace olpc_phonetic +} // namespace am +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/am/phonetic-alt/keymap.h b/src/kaleidoscope/host_keymap/linux/am/phonetic-alt/keymap.h new file mode 100644 index 0000000000..11a9b6ad58 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/am/phonetic-alt/keymap.h @@ -0,0 +1,368 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: am +// variant: phonetic-alt + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('"', LSHIFT(Key_Quote)) \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_Slash) \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('?', Key_NonUsBackslashAndPipe) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'"', LSHIFT(Key_Quote)) \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_Slash) \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'?', Key_NonUsBackslashAndPipe) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'«', LSHIFT(Key_Comma)) \ + OP(L'»', LSHIFT(Key_Period)) \ + OP(L'Ա', LSHIFT(Key_A)) /* U+0531, XKB_KEY_Armenian_AYB, ARMENIAN CAPITAL LETTER AYB */ \ + OP(L'Բ', LSHIFT(Key_B)) /* U+0532, XKB_KEY_Armenian_BEN, ARMENIAN CAPITAL LETTER BEN */ \ + OP(L'Գ', LSHIFT(Key_G)) /* U+0533, XKB_KEY_Armenian_GIM, ARMENIAN CAPITAL LETTER GIM */ \ + OP(L'Դ', LSHIFT(Key_D)) /* U+0534, XKB_KEY_Armenian_DA, ARMENIAN CAPITAL LETTER DA */ \ + OP(L'Ե', LSHIFT(Key_E)) /* U+0535, XKB_KEY_Armenian_YECH, ARMENIAN CAPITAL LETTER ECH */ \ + OP(L'Զ', LSHIFT(Key_Z)) /* U+0536, XKB_KEY_Armenian_ZA, ARMENIAN CAPITAL LETTER ZA */ \ + OP(L'Է', LSHIFT(Key_1)) /* U+0537, XKB_KEY_Armenian_E, ARMENIAN CAPITAL LETTER EH */ \ + OP(L'Ը', LSHIFT(Key_Y)) /* U+0538, XKB_KEY_Armenian_AT, ARMENIAN CAPITAL LETTER ET */ \ + OP(L'Թ', LSHIFT(Key_2)) /* U+0539, XKB_KEY_Armenian_TO, ARMENIAN CAPITAL LETTER TO */ \ + OP(L'Ժ', LSHIFT(Key_Equals)) /* U+053a, XKB_KEY_Armenian_ZHE, ARMENIAN CAPITAL LETTER ZHE */ \ + OP(L'Ի', LSHIFT(Key_I)) /* U+053b, XKB_KEY_Armenian_INI, ARMENIAN CAPITAL LETTER INI */ \ + OP(L'Լ', LSHIFT(Key_L)) /* U+053c, XKB_KEY_Armenian_LYUN, ARMENIAN CAPITAL LETTER LIWN */ \ + OP(L'Խ', LSHIFT(Key_LeftBracket)) /* U+053d, XKB_KEY_Armenian_KHE, ARMENIAN CAPITAL LETTER XEH */ \ + OP(L'Ծ', LSHIFT(Key_RightBracket)) /* U+053e, XKB_KEY_Armenian_TSA, ARMENIAN CAPITAL LETTER CA */ \ + OP(L'Կ', LSHIFT(Key_K)) /* U+053f, XKB_KEY_Armenian_KEN, ARMENIAN CAPITAL LETTER KEN */ \ + OP(L'Հ', LSHIFT(Key_H)) /* U+0540, XKB_KEY_Armenian_HO, ARMENIAN CAPITAL LETTER HO */ \ + OP(L'Ձ', LSHIFT(Key_4)) /* U+0541, XKB_KEY_Armenian_DZA, ARMENIAN CAPITAL LETTER JA */ \ + OP(L'Ղ', LSHIFT(Key_X)) /* U+0542, XKB_KEY_Armenian_GHAT, ARMENIAN CAPITAL LETTER GHAD */ \ + OP(L'Ճ', LSHIFT(Key_0)) /* U+0543, XKB_KEY_Armenian_TCHE, ARMENIAN CAPITAL LETTER CHEH */ \ + OP(L'Մ', LSHIFT(Key_M)) /* U+0544, XKB_KEY_Armenian_MEN, ARMENIAN CAPITAL LETTER MEN */ \ + OP(L'Յ', LSHIFT(Key_J)) /* U+0545, XKB_KEY_Armenian_HI, ARMENIAN CAPITAL LETTER YI */ \ + OP(L'Ն', LSHIFT(Key_N)) /* U+0546, XKB_KEY_Armenian_NU, ARMENIAN CAPITAL LETTER NOW */ \ + OP(L'Շ', LSHIFT(Key_NonUsPound)) /* U+0547, XKB_KEY_Armenian_SHA, ARMENIAN CAPITAL LETTER SHA */ \ + OP(L'Ո', LSHIFT(Key_W)) /* U+0548, XKB_KEY_Armenian_VO, ARMENIAN CAPITAL LETTER VO */ \ + OP(L'Չ', LSHIFT(Key_9)) /* U+0549, XKB_KEY_Armenian_CHA, ARMENIAN CAPITAL LETTER CHA */ \ + OP(L'Պ', LSHIFT(Key_P)) /* U+054a, XKB_KEY_Armenian_PE, ARMENIAN CAPITAL LETTER PEH */ \ + OP(L'Ջ', LSHIFT(Key_5)) /* U+054b, XKB_KEY_Armenian_JE, ARMENIAN CAPITAL LETTER JHEH */ \ + OP(L'Ռ', LSHIFT(Key_R)) /* U+054c, XKB_KEY_Armenian_RA, ARMENIAN CAPITAL LETTER RA */ \ + OP(L'Ս', LSHIFT(Key_S)) /* U+054d, XKB_KEY_Armenian_SE, ARMENIAN CAPITAL LETTER SEH */ \ + OP(L'Վ', LSHIFT(Key_V)) /* U+054e, XKB_KEY_Armenian_VEV, ARMENIAN CAPITAL LETTER VEW */ \ + OP(L'Տ', LSHIFT(Key_T)) /* U+054f, XKB_KEY_Armenian_TYUN, ARMENIAN CAPITAL LETTER TIWN */ \ + OP(L'Ր', LSHIFT(Key_8)) /* U+0550, XKB_KEY_Armenian_RE, ARMENIAN CAPITAL LETTER REH */ \ + OP(L'Ց', LSHIFT(Key_C)) /* U+0551, XKB_KEY_Armenian_TSO, ARMENIAN CAPITAL LETTER CO */ \ + OP(L'Ւ', LSHIFT(Key_6)) /* U+0552, XKB_KEY_Armenian_VYUN, ARMENIAN CAPITAL LETTER YIWN */ \ + OP(L'Փ', LSHIFT(Key_3)) /* U+0553, XKB_KEY_Armenian_PYUR, ARMENIAN CAPITAL LETTER PIWR */ \ + OP(L'Ք', LSHIFT(Key_Q)) /* U+0554, XKB_KEY_Armenian_KE, ARMENIAN CAPITAL LETTER KEH */ \ + OP(L'Օ', LSHIFT(Key_O)) /* U+0555, XKB_KEY_Armenian_O, ARMENIAN CAPITAL LETTER OH */ \ + OP(L'Ֆ', LSHIFT(Key_F)) /* U+0556, XKB_KEY_Armenian_FE, ARMENIAN CAPITAL LETTER FEH */ \ + OP(L'՛', Key_Quote) /* U+055b, XKB_KEY_Armenian_accent, ARMENIAN EMPHASIS MARK */ \ + OP(L'՜', LSHIFT(Key_Backtick)) /* U+055c, XKB_KEY_Armenian_exclam, ARMENIAN EXCLAMATION MARK */ \ + OP(L'՝', Key_Backtick) /* U+055d, XKB_KEY_Armenian_separation_mark, ARMENIAN COMMA */ \ + OP(L'՞', LSHIFT(Key_Slash)) /* U+055e, XKB_KEY_Armenian_question, ARMENIAN QUESTION MARK */ \ + OP(L'ա', Key_A) /* U+0561, XKB_KEY_Armenian_ayb, ARMENIAN SMALL LETTER AYB */ \ + OP(L'բ', Key_B) /* U+0562, XKB_KEY_Armenian_ben, ARMENIAN SMALL LETTER BEN */ \ + OP(L'գ', Key_G) /* U+0563, XKB_KEY_Armenian_gim, ARMENIAN SMALL LETTER GIM */ \ + OP(L'դ', Key_D) /* U+0564, XKB_KEY_Armenian_da, ARMENIAN SMALL LETTER DA */ \ + OP(L'ե', Key_E) /* U+0565, XKB_KEY_Armenian_yech, ARMENIAN SMALL LETTER ECH */ \ + OP(L'զ', Key_Z) /* U+0566, XKB_KEY_Armenian_za, ARMENIAN SMALL LETTER ZA */ \ + OP(L'է', Key_1) /* U+0567, XKB_KEY_Armenian_e, ARMENIAN SMALL LETTER EH */ \ + OP(L'ը', Key_Y) /* U+0568, XKB_KEY_Armenian_at, ARMENIAN SMALL LETTER ET */ \ + OP(L'թ', Key_2) /* U+0569, XKB_KEY_Armenian_to, ARMENIAN SMALL LETTER TO */ \ + OP(L'ժ', Key_Equals) /* U+056a, XKB_KEY_Armenian_zhe, ARMENIAN SMALL LETTER ZHE */ \ + OP(L'ի', Key_I) /* U+056b, XKB_KEY_Armenian_ini, ARMENIAN SMALL LETTER INI */ \ + OP(L'լ', Key_L) /* U+056c, XKB_KEY_Armenian_lyun, ARMENIAN SMALL LETTER LIWN */ \ + OP(L'խ', Key_LeftBracket) /* U+056d, XKB_KEY_Armenian_khe, ARMENIAN SMALL LETTER XEH */ \ + OP(L'ծ', Key_RightBracket) /* U+056e, XKB_KEY_Armenian_tsa, ARMENIAN SMALL LETTER CA */ \ + OP(L'կ', Key_K) /* U+056f, XKB_KEY_Armenian_ken, ARMENIAN SMALL LETTER KEN */ \ + OP(L'հ', Key_H) /* U+0570, XKB_KEY_Armenian_ho, ARMENIAN SMALL LETTER HO */ \ + OP(L'ձ', Key_4) /* U+0571, XKB_KEY_Armenian_dza, ARMENIAN SMALL LETTER JA */ \ + OP(L'ղ', Key_X) /* U+0572, XKB_KEY_Armenian_ghat, ARMENIAN SMALL LETTER GHAD */ \ + OP(L'ճ', Key_0) /* U+0573, XKB_KEY_Armenian_tche, ARMENIAN SMALL LETTER CHEH */ \ + OP(L'մ', Key_M) /* U+0574, XKB_KEY_Armenian_men, ARMENIAN SMALL LETTER MEN */ \ + OP(L'յ', Key_J) /* U+0575, XKB_KEY_Armenian_hi, ARMENIAN SMALL LETTER YI */ \ + OP(L'ն', Key_N) /* U+0576, XKB_KEY_Armenian_nu, ARMENIAN SMALL LETTER NOW */ \ + OP(L'շ', Key_NonUsPound) /* U+0577, XKB_KEY_Armenian_sha, ARMENIAN SMALL LETTER SHA */ \ + OP(L'ո', Key_W) /* U+0578, XKB_KEY_Armenian_vo, ARMENIAN SMALL LETTER VO */ \ + OP(L'չ', Key_9) /* U+0579, XKB_KEY_Armenian_cha, ARMENIAN SMALL LETTER CHA */ \ + OP(L'պ', Key_P) /* U+057a, XKB_KEY_Armenian_pe, ARMENIAN SMALL LETTER PEH */ \ + OP(L'ջ', Key_5) /* U+057b, XKB_KEY_Armenian_je, ARMENIAN SMALL LETTER JHEH */ \ + OP(L'ռ', Key_R) /* U+057c, XKB_KEY_Armenian_ra, ARMENIAN SMALL LETTER RA */ \ + OP(L'ս', Key_S) /* U+057d, XKB_KEY_Armenian_se, ARMENIAN SMALL LETTER SEH */ \ + OP(L'վ', Key_V) /* U+057e, XKB_KEY_Armenian_vev, ARMENIAN SMALL LETTER VEW */ \ + OP(L'տ', Key_T) /* U+057f, XKB_KEY_Armenian_tyun, ARMENIAN SMALL LETTER TIWN */ \ + OP(L'ր', Key_8) /* U+0580, XKB_KEY_Armenian_re, ARMENIAN SMALL LETTER REH */ \ + OP(L'ց', Key_C) /* U+0581, XKB_KEY_Armenian_tso, ARMENIAN SMALL LETTER CO */ \ + OP(L'ւ', Key_6) /* U+0582, XKB_KEY_Armenian_vyun, ARMENIAN SMALL LETTER YIWN */ \ + OP(L'փ', Key_3) /* U+0583, XKB_KEY_Armenian_pyur, ARMENIAN SMALL LETTER PIWR */ \ + OP(L'ք', Key_Q) /* U+0584, XKB_KEY_Armenian_ke, ARMENIAN SMALL LETTER KEH */ \ + OP(L'օ', Key_O) /* U+0585, XKB_KEY_Armenian_o, ARMENIAN SMALL LETTER OH */ \ + OP(L'ֆ', Key_F) /* U+0586, XKB_KEY_Armenian_fe, ARMENIAN SMALL LETTER FEH */ \ + OP(L'և', Key_7) /* U+0587, XKB_KEY_Armenian_ligature_ew, ARMENIAN SMALL LIGATURE ECH YIWN */ \ + OP(L'։', LSHIFT(Key_Semicolon)) /* U+0589, XKB_KEY_Armenian_full_stop, ARMENIAN FULL STOP */ \ + OP(L'֊', Key_Minus) /* U+058a, XKB_KEY_Armenian_hyphen, ARMENIAN HYPHEN */ \ + OP(L'֏', LSHIFT(Key_7)) \ + OP(L'―', LSHIFT(Key_Minus)) \ + OP(L'․', Key_Period) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_Armenian_AT, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Armenian_AYB, LSHIFT(Key_A)) \ + OP(XKB_KEY_Armenian_BEN, LSHIFT(Key_B)) \ + OP(XKB_KEY_Armenian_CHA, LSHIFT(Key_9)) \ + OP(XKB_KEY_Armenian_DA, LSHIFT(Key_D)) \ + OP(XKB_KEY_Armenian_DZA, LSHIFT(Key_4)) \ + OP(XKB_KEY_Armenian_E, LSHIFT(Key_1)) \ + OP(XKB_KEY_Armenian_FE, LSHIFT(Key_F)) \ + OP(XKB_KEY_Armenian_GHAT, LSHIFT(Key_X)) \ + OP(XKB_KEY_Armenian_GIM, LSHIFT(Key_G)) \ + OP(XKB_KEY_Armenian_HI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Armenian_HO, LSHIFT(Key_H)) \ + OP(XKB_KEY_Armenian_INI, LSHIFT(Key_I)) \ + OP(XKB_KEY_Armenian_JE, LSHIFT(Key_5)) \ + OP(XKB_KEY_Armenian_KE, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Armenian_KEN, LSHIFT(Key_K)) \ + OP(XKB_KEY_Armenian_KHE, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Armenian_LYUN, LSHIFT(Key_L)) \ + OP(XKB_KEY_Armenian_MEN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Armenian_NU, LSHIFT(Key_N)) \ + OP(XKB_KEY_Armenian_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Armenian_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Armenian_PYUR, LSHIFT(Key_3)) \ + OP(XKB_KEY_Armenian_RA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Armenian_RE, LSHIFT(Key_8)) \ + OP(XKB_KEY_Armenian_SE, LSHIFT(Key_S)) \ + OP(XKB_KEY_Armenian_SHA, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Armenian_TCHE, LSHIFT(Key_0)) \ + OP(XKB_KEY_Armenian_TO, LSHIFT(Key_2)) \ + OP(XKB_KEY_Armenian_TSA, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Armenian_TSO, LSHIFT(Key_C)) \ + OP(XKB_KEY_Armenian_TYUN, LSHIFT(Key_T)) \ + OP(XKB_KEY_Armenian_VEV, LSHIFT(Key_V)) \ + OP(XKB_KEY_Armenian_VO, LSHIFT(Key_W)) \ + OP(XKB_KEY_Armenian_VYUN, LSHIFT(Key_6)) \ + OP(XKB_KEY_Armenian_YECH, LSHIFT(Key_E)) \ + OP(XKB_KEY_Armenian_ZA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Armenian_ZHE, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Armenian_accent, Key_Quote) \ + OP(XKB_KEY_Armenian_at, Key_Y) \ + OP(XKB_KEY_Armenian_ayb, Key_A) \ + OP(XKB_KEY_Armenian_ben, Key_B) \ + OP(XKB_KEY_Armenian_cha, Key_9) \ + OP(XKB_KEY_Armenian_da, Key_D) \ + OP(XKB_KEY_Armenian_dza, Key_4) \ + OP(XKB_KEY_Armenian_e, Key_1) \ + OP(XKB_KEY_Armenian_exclam, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Armenian_fe, Key_F) \ + OP(XKB_KEY_Armenian_full_stop, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Armenian_ghat, Key_X) \ + OP(XKB_KEY_Armenian_gim, Key_G) \ + OP(XKB_KEY_Armenian_hi, Key_J) \ + OP(XKB_KEY_Armenian_ho, Key_H) \ + OP(XKB_KEY_Armenian_hyphen, Key_Minus) \ + OP(XKB_KEY_Armenian_ini, Key_I) \ + OP(XKB_KEY_Armenian_je, Key_5) \ + OP(XKB_KEY_Armenian_ke, Key_Q) \ + OP(XKB_KEY_Armenian_ken, Key_K) \ + OP(XKB_KEY_Armenian_khe, Key_LeftBracket) \ + OP(XKB_KEY_Armenian_ligature_ew, Key_7) \ + OP(XKB_KEY_Armenian_lyun, Key_L) \ + OP(XKB_KEY_Armenian_men, Key_M) \ + OP(XKB_KEY_Armenian_nu, Key_N) \ + OP(XKB_KEY_Armenian_o, Key_O) \ + OP(XKB_KEY_Armenian_pe, Key_P) \ + OP(XKB_KEY_Armenian_pyur, Key_3) \ + OP(XKB_KEY_Armenian_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Armenian_ra, Key_R) \ + OP(XKB_KEY_Armenian_re, Key_8) \ + OP(XKB_KEY_Armenian_se, Key_S) \ + OP(XKB_KEY_Armenian_separation_mark, Key_Backtick) \ + OP(XKB_KEY_Armenian_sha, Key_NonUsPound) \ + OP(XKB_KEY_Armenian_tche, Key_0) \ + OP(XKB_KEY_Armenian_to, Key_2) \ + OP(XKB_KEY_Armenian_tsa, Key_RightBracket) \ + OP(XKB_KEY_Armenian_tso, Key_C) \ + OP(XKB_KEY_Armenian_tyun, Key_T) \ + OP(XKB_KEY_Armenian_vev, Key_V) \ + OP(XKB_KEY_Armenian_vo, Key_W) \ + OP(XKB_KEY_Armenian_vyun, Key_6) \ + OP(XKB_KEY_Armenian_yech, Key_E) \ + OP(XKB_KEY_Armenian_za, Key_Z) \ + OP(XKB_KEY_Armenian_zhe, Key_Equals) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_question, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace am { +namespace phonetic_alt { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace phonetic_alt +} // namespace am +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/am/phonetic/keymap.h b/src/kaleidoscope/host_keymap/linux/am/phonetic/keymap.h new file mode 100644 index 0000000000..2902e20e2d --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/am/phonetic/keymap.h @@ -0,0 +1,368 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: am +// variant: phonetic + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('"', LSHIFT(Key_Quote)) \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_Slash) \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('?', Key_NonUsBackslashAndPipe) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'"', LSHIFT(Key_Quote)) \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_Slash) \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'?', Key_NonUsBackslashAndPipe) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'«', LSHIFT(Key_Comma)) \ + OP(L'»', LSHIFT(Key_Period)) \ + OP(L'Ա', LSHIFT(Key_A)) /* U+0531, XKB_KEY_Armenian_AYB, ARMENIAN CAPITAL LETTER AYB */ \ + OP(L'Բ', LSHIFT(Key_B)) /* U+0532, XKB_KEY_Armenian_BEN, ARMENIAN CAPITAL LETTER BEN */ \ + OP(L'Գ', LSHIFT(Key_G)) /* U+0533, XKB_KEY_Armenian_GIM, ARMENIAN CAPITAL LETTER GIM */ \ + OP(L'Դ', LSHIFT(Key_D)) /* U+0534, XKB_KEY_Armenian_DA, ARMENIAN CAPITAL LETTER DA */ \ + OP(L'Ե', LSHIFT(Key_E)) /* U+0535, XKB_KEY_Armenian_YECH, ARMENIAN CAPITAL LETTER ECH */ \ + OP(L'Զ', LSHIFT(Key_Z)) /* U+0536, XKB_KEY_Armenian_ZA, ARMENIAN CAPITAL LETTER ZA */ \ + OP(L'Է', LSHIFT(Key_1)) /* U+0537, XKB_KEY_Armenian_E, ARMENIAN CAPITAL LETTER EH */ \ + OP(L'Ը', LSHIFT(Key_Y)) /* U+0538, XKB_KEY_Armenian_AT, ARMENIAN CAPITAL LETTER ET */ \ + OP(L'Թ', LSHIFT(Key_2)) /* U+0539, XKB_KEY_Armenian_TO, ARMENIAN CAPITAL LETTER TO */ \ + OP(L'Ժ', LSHIFT(Key_Equals)) /* U+053a, XKB_KEY_Armenian_ZHE, ARMENIAN CAPITAL LETTER ZHE */ \ + OP(L'Ի', LSHIFT(Key_I)) /* U+053b, XKB_KEY_Armenian_INI, ARMENIAN CAPITAL LETTER INI */ \ + OP(L'Լ', LSHIFT(Key_L)) /* U+053c, XKB_KEY_Armenian_LYUN, ARMENIAN CAPITAL LETTER LIWN */ \ + OP(L'Խ', LSHIFT(Key_LeftBracket)) /* U+053d, XKB_KEY_Armenian_KHE, ARMENIAN CAPITAL LETTER XEH */ \ + OP(L'Ծ', LSHIFT(Key_RightBracket)) /* U+053e, XKB_KEY_Armenian_TSA, ARMENIAN CAPITAL LETTER CA */ \ + OP(L'Կ', LSHIFT(Key_K)) /* U+053f, XKB_KEY_Armenian_KEN, ARMENIAN CAPITAL LETTER KEN */ \ + OP(L'Հ', LSHIFT(Key_H)) /* U+0540, XKB_KEY_Armenian_HO, ARMENIAN CAPITAL LETTER HO */ \ + OP(L'Ձ', LSHIFT(Key_4)) /* U+0541, XKB_KEY_Armenian_DZA, ARMENIAN CAPITAL LETTER JA */ \ + OP(L'Ղ', LSHIFT(Key_X)) /* U+0542, XKB_KEY_Armenian_GHAT, ARMENIAN CAPITAL LETTER GHAD */ \ + OP(L'Ճ', LSHIFT(Key_0)) /* U+0543, XKB_KEY_Armenian_TCHE, ARMENIAN CAPITAL LETTER CHEH */ \ + OP(L'Մ', LSHIFT(Key_M)) /* U+0544, XKB_KEY_Armenian_MEN, ARMENIAN CAPITAL LETTER MEN */ \ + OP(L'Յ', LSHIFT(Key_J)) /* U+0545, XKB_KEY_Armenian_HI, ARMENIAN CAPITAL LETTER YI */ \ + OP(L'Ն', LSHIFT(Key_N)) /* U+0546, XKB_KEY_Armenian_NU, ARMENIAN CAPITAL LETTER NOW */ \ + OP(L'Շ', LSHIFT(Key_NonUsPound)) /* U+0547, XKB_KEY_Armenian_SHA, ARMENIAN CAPITAL LETTER SHA */ \ + OP(L'Ո', LSHIFT(Key_W)) /* U+0548, XKB_KEY_Armenian_VO, ARMENIAN CAPITAL LETTER VO */ \ + OP(L'Չ', LSHIFT(Key_9)) /* U+0549, XKB_KEY_Armenian_CHA, ARMENIAN CAPITAL LETTER CHA */ \ + OP(L'Պ', LSHIFT(Key_P)) /* U+054a, XKB_KEY_Armenian_PE, ARMENIAN CAPITAL LETTER PEH */ \ + OP(L'Ջ', LSHIFT(Key_5)) /* U+054b, XKB_KEY_Armenian_JE, ARMENIAN CAPITAL LETTER JHEH */ \ + OP(L'Ռ', LSHIFT(Key_8)) /* U+054c, XKB_KEY_Armenian_RA, ARMENIAN CAPITAL LETTER RA */ \ + OP(L'Ս', LSHIFT(Key_S)) /* U+054d, XKB_KEY_Armenian_SE, ARMENIAN CAPITAL LETTER SEH */ \ + OP(L'Վ', LSHIFT(Key_V)) /* U+054e, XKB_KEY_Armenian_VEV, ARMENIAN CAPITAL LETTER VEW */ \ + OP(L'Տ', LSHIFT(Key_T)) /* U+054f, XKB_KEY_Armenian_TYUN, ARMENIAN CAPITAL LETTER TIWN */ \ + OP(L'Ր', LSHIFT(Key_R)) /* U+0550, XKB_KEY_Armenian_RE, ARMENIAN CAPITAL LETTER REH */ \ + OP(L'Ց', LSHIFT(Key_C)) /* U+0551, XKB_KEY_Armenian_TSO, ARMENIAN CAPITAL LETTER CO */ \ + OP(L'Ւ', LSHIFT(Key_6)) /* U+0552, XKB_KEY_Armenian_VYUN, ARMENIAN CAPITAL LETTER YIWN */ \ + OP(L'Փ', LSHIFT(Key_3)) /* U+0553, XKB_KEY_Armenian_PYUR, ARMENIAN CAPITAL LETTER PIWR */ \ + OP(L'Ք', LSHIFT(Key_Q)) /* U+0554, XKB_KEY_Armenian_KE, ARMENIAN CAPITAL LETTER KEH */ \ + OP(L'Օ', LSHIFT(Key_O)) /* U+0555, XKB_KEY_Armenian_O, ARMENIAN CAPITAL LETTER OH */ \ + OP(L'Ֆ', LSHIFT(Key_F)) /* U+0556, XKB_KEY_Armenian_FE, ARMENIAN CAPITAL LETTER FEH */ \ + OP(L'՛', Key_Quote) /* U+055b, XKB_KEY_Armenian_accent, ARMENIAN EMPHASIS MARK */ \ + OP(L'՜', LSHIFT(Key_Backtick)) /* U+055c, XKB_KEY_Armenian_exclam, ARMENIAN EXCLAMATION MARK */ \ + OP(L'՝', Key_Backtick) /* U+055d, XKB_KEY_Armenian_separation_mark, ARMENIAN COMMA */ \ + OP(L'՞', LSHIFT(Key_Slash)) /* U+055e, XKB_KEY_Armenian_question, ARMENIAN QUESTION MARK */ \ + OP(L'ա', Key_A) /* U+0561, XKB_KEY_Armenian_ayb, ARMENIAN SMALL LETTER AYB */ \ + OP(L'բ', Key_B) /* U+0562, XKB_KEY_Armenian_ben, ARMENIAN SMALL LETTER BEN */ \ + OP(L'գ', Key_G) /* U+0563, XKB_KEY_Armenian_gim, ARMENIAN SMALL LETTER GIM */ \ + OP(L'դ', Key_D) /* U+0564, XKB_KEY_Armenian_da, ARMENIAN SMALL LETTER DA */ \ + OP(L'ե', Key_E) /* U+0565, XKB_KEY_Armenian_yech, ARMENIAN SMALL LETTER ECH */ \ + OP(L'զ', Key_Z) /* U+0566, XKB_KEY_Armenian_za, ARMENIAN SMALL LETTER ZA */ \ + OP(L'է', Key_1) /* U+0567, XKB_KEY_Armenian_e, ARMENIAN SMALL LETTER EH */ \ + OP(L'ը', Key_Y) /* U+0568, XKB_KEY_Armenian_at, ARMENIAN SMALL LETTER ET */ \ + OP(L'թ', Key_2) /* U+0569, XKB_KEY_Armenian_to, ARMENIAN SMALL LETTER TO */ \ + OP(L'ժ', Key_Equals) /* U+056a, XKB_KEY_Armenian_zhe, ARMENIAN SMALL LETTER ZHE */ \ + OP(L'ի', Key_I) /* U+056b, XKB_KEY_Armenian_ini, ARMENIAN SMALL LETTER INI */ \ + OP(L'լ', Key_L) /* U+056c, XKB_KEY_Armenian_lyun, ARMENIAN SMALL LETTER LIWN */ \ + OP(L'խ', Key_LeftBracket) /* U+056d, XKB_KEY_Armenian_khe, ARMENIAN SMALL LETTER XEH */ \ + OP(L'ծ', Key_RightBracket) /* U+056e, XKB_KEY_Armenian_tsa, ARMENIAN SMALL LETTER CA */ \ + OP(L'կ', Key_K) /* U+056f, XKB_KEY_Armenian_ken, ARMENIAN SMALL LETTER KEN */ \ + OP(L'հ', Key_H) /* U+0570, XKB_KEY_Armenian_ho, ARMENIAN SMALL LETTER HO */ \ + OP(L'ձ', Key_4) /* U+0571, XKB_KEY_Armenian_dza, ARMENIAN SMALL LETTER JA */ \ + OP(L'ղ', Key_X) /* U+0572, XKB_KEY_Armenian_ghat, ARMENIAN SMALL LETTER GHAD */ \ + OP(L'ճ', Key_0) /* U+0573, XKB_KEY_Armenian_tche, ARMENIAN SMALL LETTER CHEH */ \ + OP(L'մ', Key_M) /* U+0574, XKB_KEY_Armenian_men, ARMENIAN SMALL LETTER MEN */ \ + OP(L'յ', Key_J) /* U+0575, XKB_KEY_Armenian_hi, ARMENIAN SMALL LETTER YI */ \ + OP(L'ն', Key_N) /* U+0576, XKB_KEY_Armenian_nu, ARMENIAN SMALL LETTER NOW */ \ + OP(L'շ', Key_NonUsPound) /* U+0577, XKB_KEY_Armenian_sha, ARMENIAN SMALL LETTER SHA */ \ + OP(L'ո', Key_W) /* U+0578, XKB_KEY_Armenian_vo, ARMENIAN SMALL LETTER VO */ \ + OP(L'չ', Key_9) /* U+0579, XKB_KEY_Armenian_cha, ARMENIAN SMALL LETTER CHA */ \ + OP(L'պ', Key_P) /* U+057a, XKB_KEY_Armenian_pe, ARMENIAN SMALL LETTER PEH */ \ + OP(L'ջ', Key_5) /* U+057b, XKB_KEY_Armenian_je, ARMENIAN SMALL LETTER JHEH */ \ + OP(L'ռ', Key_8) /* U+057c, XKB_KEY_Armenian_ra, ARMENIAN SMALL LETTER RA */ \ + OP(L'ս', Key_S) /* U+057d, XKB_KEY_Armenian_se, ARMENIAN SMALL LETTER SEH */ \ + OP(L'վ', Key_V) /* U+057e, XKB_KEY_Armenian_vev, ARMENIAN SMALL LETTER VEW */ \ + OP(L'տ', Key_T) /* U+057f, XKB_KEY_Armenian_tyun, ARMENIAN SMALL LETTER TIWN */ \ + OP(L'ր', Key_R) /* U+0580, XKB_KEY_Armenian_re, ARMENIAN SMALL LETTER REH */ \ + OP(L'ց', Key_C) /* U+0581, XKB_KEY_Armenian_tso, ARMENIAN SMALL LETTER CO */ \ + OP(L'ւ', Key_6) /* U+0582, XKB_KEY_Armenian_vyun, ARMENIAN SMALL LETTER YIWN */ \ + OP(L'փ', Key_3) /* U+0583, XKB_KEY_Armenian_pyur, ARMENIAN SMALL LETTER PIWR */ \ + OP(L'ք', Key_Q) /* U+0584, XKB_KEY_Armenian_ke, ARMENIAN SMALL LETTER KEH */ \ + OP(L'օ', Key_O) /* U+0585, XKB_KEY_Armenian_o, ARMENIAN SMALL LETTER OH */ \ + OP(L'ֆ', Key_F) /* U+0586, XKB_KEY_Armenian_fe, ARMENIAN SMALL LETTER FEH */ \ + OP(L'և', Key_7) /* U+0587, XKB_KEY_Armenian_ligature_ew, ARMENIAN SMALL LIGATURE ECH YIWN */ \ + OP(L'։', LSHIFT(Key_Semicolon)) /* U+0589, XKB_KEY_Armenian_full_stop, ARMENIAN FULL STOP */ \ + OP(L'֊', Key_Minus) /* U+058a, XKB_KEY_Armenian_hyphen, ARMENIAN HYPHEN */ \ + OP(L'֏', LSHIFT(Key_7)) \ + OP(L'―', LSHIFT(Key_Minus)) \ + OP(L'․', Key_Period) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_Armenian_AT, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Armenian_AYB, LSHIFT(Key_A)) \ + OP(XKB_KEY_Armenian_BEN, LSHIFT(Key_B)) \ + OP(XKB_KEY_Armenian_CHA, LSHIFT(Key_9)) \ + OP(XKB_KEY_Armenian_DA, LSHIFT(Key_D)) \ + OP(XKB_KEY_Armenian_DZA, LSHIFT(Key_4)) \ + OP(XKB_KEY_Armenian_E, LSHIFT(Key_1)) \ + OP(XKB_KEY_Armenian_FE, LSHIFT(Key_F)) \ + OP(XKB_KEY_Armenian_GHAT, LSHIFT(Key_X)) \ + OP(XKB_KEY_Armenian_GIM, LSHIFT(Key_G)) \ + OP(XKB_KEY_Armenian_HI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Armenian_HO, LSHIFT(Key_H)) \ + OP(XKB_KEY_Armenian_INI, LSHIFT(Key_I)) \ + OP(XKB_KEY_Armenian_JE, LSHIFT(Key_5)) \ + OP(XKB_KEY_Armenian_KE, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Armenian_KEN, LSHIFT(Key_K)) \ + OP(XKB_KEY_Armenian_KHE, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Armenian_LYUN, LSHIFT(Key_L)) \ + OP(XKB_KEY_Armenian_MEN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Armenian_NU, LSHIFT(Key_N)) \ + OP(XKB_KEY_Armenian_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Armenian_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Armenian_PYUR, LSHIFT(Key_3)) \ + OP(XKB_KEY_Armenian_RA, LSHIFT(Key_8)) \ + OP(XKB_KEY_Armenian_RE, LSHIFT(Key_R)) \ + OP(XKB_KEY_Armenian_SE, LSHIFT(Key_S)) \ + OP(XKB_KEY_Armenian_SHA, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Armenian_TCHE, LSHIFT(Key_0)) \ + OP(XKB_KEY_Armenian_TO, LSHIFT(Key_2)) \ + OP(XKB_KEY_Armenian_TSA, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Armenian_TSO, LSHIFT(Key_C)) \ + OP(XKB_KEY_Armenian_TYUN, LSHIFT(Key_T)) \ + OP(XKB_KEY_Armenian_VEV, LSHIFT(Key_V)) \ + OP(XKB_KEY_Armenian_VO, LSHIFT(Key_W)) \ + OP(XKB_KEY_Armenian_VYUN, LSHIFT(Key_6)) \ + OP(XKB_KEY_Armenian_YECH, LSHIFT(Key_E)) \ + OP(XKB_KEY_Armenian_ZA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Armenian_ZHE, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Armenian_accent, Key_Quote) \ + OP(XKB_KEY_Armenian_at, Key_Y) \ + OP(XKB_KEY_Armenian_ayb, Key_A) \ + OP(XKB_KEY_Armenian_ben, Key_B) \ + OP(XKB_KEY_Armenian_cha, Key_9) \ + OP(XKB_KEY_Armenian_da, Key_D) \ + OP(XKB_KEY_Armenian_dza, Key_4) \ + OP(XKB_KEY_Armenian_e, Key_1) \ + OP(XKB_KEY_Armenian_exclam, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Armenian_fe, Key_F) \ + OP(XKB_KEY_Armenian_full_stop, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Armenian_ghat, Key_X) \ + OP(XKB_KEY_Armenian_gim, Key_G) \ + OP(XKB_KEY_Armenian_hi, Key_J) \ + OP(XKB_KEY_Armenian_ho, Key_H) \ + OP(XKB_KEY_Armenian_hyphen, Key_Minus) \ + OP(XKB_KEY_Armenian_ini, Key_I) \ + OP(XKB_KEY_Armenian_je, Key_5) \ + OP(XKB_KEY_Armenian_ke, Key_Q) \ + OP(XKB_KEY_Armenian_ken, Key_K) \ + OP(XKB_KEY_Armenian_khe, Key_LeftBracket) \ + OP(XKB_KEY_Armenian_ligature_ew, Key_7) \ + OP(XKB_KEY_Armenian_lyun, Key_L) \ + OP(XKB_KEY_Armenian_men, Key_M) \ + OP(XKB_KEY_Armenian_nu, Key_N) \ + OP(XKB_KEY_Armenian_o, Key_O) \ + OP(XKB_KEY_Armenian_pe, Key_P) \ + OP(XKB_KEY_Armenian_pyur, Key_3) \ + OP(XKB_KEY_Armenian_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Armenian_ra, Key_8) \ + OP(XKB_KEY_Armenian_re, Key_R) \ + OP(XKB_KEY_Armenian_se, Key_S) \ + OP(XKB_KEY_Armenian_separation_mark, Key_Backtick) \ + OP(XKB_KEY_Armenian_sha, Key_NonUsPound) \ + OP(XKB_KEY_Armenian_tche, Key_0) \ + OP(XKB_KEY_Armenian_to, Key_2) \ + OP(XKB_KEY_Armenian_tsa, Key_RightBracket) \ + OP(XKB_KEY_Armenian_tso, Key_C) \ + OP(XKB_KEY_Armenian_tyun, Key_T) \ + OP(XKB_KEY_Armenian_vev, Key_V) \ + OP(XKB_KEY_Armenian_vo, Key_W) \ + OP(XKB_KEY_Armenian_vyun, Key_6) \ + OP(XKB_KEY_Armenian_yech, Key_E) \ + OP(XKB_KEY_Armenian_za, Key_Z) \ + OP(XKB_KEY_Armenian_zhe, Key_Equals) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_question, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace am { +namespace phonetic { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace phonetic +} // namespace am +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/am/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/am/standard/keymap.h new file mode 100644 index 0000000000..c697c3f9fe --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/am/standard/keymap.h @@ -0,0 +1,380 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: am +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_6)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_9) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_4) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('?', Key_NonUsBackslashAndPipe) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_6)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_9) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_4) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'?', Key_NonUsBackslashAndPipe) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'«', LSHIFT(Key_NonUsPound)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', Key_NonUsPound) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Ա', LSHIFT(Key_G)) /* U+0531, XKB_KEY_Armenian_AYB, ARMENIAN CAPITAL LETTER AYB */ \ + OP(L'Բ', LSHIFT(Key_E)) /* U+0532, XKB_KEY_Armenian_BEN, ARMENIAN CAPITAL LETTER BEN */ \ + OP(L'Գ', LSHIFT(Key_D)) /* U+0533, XKB_KEY_Armenian_GIM, ARMENIAN CAPITAL LETTER GIM */ \ + OP(L'Դ', LSHIFT(Key_X)) /* U+0534, XKB_KEY_Armenian_DA, ARMENIAN CAPITAL LETTER DA */ \ + OP(L'Ե', LSHIFT(Key_F)) /* U+0535, XKB_KEY_Armenian_YECH, ARMENIAN CAPITAL LETTER ECH */ \ + OP(L'Զ', LSHIFT(Key_B)) /* U+0536, XKB_KEY_Armenian_ZA, ARMENIAN CAPITAL LETTER ZA */ \ + OP(L'Է', LSHIFT(Key_Minus)) /* U+0537, XKB_KEY_Armenian_E, ARMENIAN CAPITAL LETTER EH */ \ + OP(L'Ը', LSHIFT(Key_O)) /* U+0538, XKB_KEY_Armenian_AT, ARMENIAN CAPITAL LETTER ET */ \ + OP(L'Թ', LSHIFT(Key_P)) /* U+0539, XKB_KEY_Armenian_TO, ARMENIAN CAPITAL LETTER TO */ \ + OP(L'Ժ', LSHIFT(Key_Z)) /* U+053a, XKB_KEY_Armenian_ZHE, ARMENIAN CAPITAL LETTER ZHE */ \ + OP(L'Ի', LSHIFT(Key_J)) /* U+053b, XKB_KEY_Armenian_INI, ARMENIAN CAPITAL LETTER INI */ \ + OP(L'Լ', LSHIFT(Key_N)) /* U+053c, XKB_KEY_Armenian_LYUN, ARMENIAN CAPITAL LETTER LIWN */ \ + OP(L'Խ', LSHIFT(Key_Comma)) /* U+053d, XKB_KEY_Armenian_KHE, ARMENIAN CAPITAL LETTER XEH */ \ + OP(L'Ծ', LSHIFT(Key_LeftBracket)) /* U+053e, XKB_KEY_Armenian_TSA, ARMENIAN CAPITAL LETTER CA */ \ + OP(L'Կ', LSHIFT(Key_I)) /* U+053f, XKB_KEY_Armenian_KEN, ARMENIAN CAPITAL LETTER KEN */ \ + OP(L'Հ', LSHIFT(Key_L)) /* U+0540, XKB_KEY_Armenian_HO, ARMENIAN CAPITAL LETTER HO */ \ + OP(L'Ձ', LSHIFT(Key_2)) /* U+0541, XKB_KEY_Armenian_DZA, ARMENIAN CAPITAL LETTER JA */ \ + OP(L'Ղ', LSHIFT(Key_Equals)) /* U+0542, XKB_KEY_Armenian_GHAT, ARMENIAN CAPITAL LETTER GHAD */ \ + OP(L'Ճ', LSHIFT(Key_Q)) /* U+0543, XKB_KEY_Armenian_TCHE, ARMENIAN CAPITAL LETTER CHEH */ \ + OP(L'Մ', LSHIFT(Key_T)) /* U+0544, XKB_KEY_Armenian_MEN, ARMENIAN CAPITAL LETTER MEN */ \ + OP(L'Յ', LSHIFT(Key_V)) /* U+0545, XKB_KEY_Armenian_HI, ARMENIAN CAPITAL LETTER YI */ \ + OP(L'Ն', LSHIFT(Key_H)) /* U+0546, XKB_KEY_Armenian_NU, ARMENIAN CAPITAL LETTER NOW */ \ + OP(L'Շ', LSHIFT(Key_Period)) /* U+0547, XKB_KEY_Armenian_SHA, ARMENIAN CAPITAL LETTER SHA */ \ + OP(L'Ո', LSHIFT(Key_Y)) /* U+0548, XKB_KEY_Armenian_VO, ARMENIAN CAPITAL LETTER VO */ \ + OP(L'Չ', LSHIFT(Key_C)) /* U+0549, XKB_KEY_Armenian_CHA, ARMENIAN CAPITAL LETTER CHA */ \ + OP(L'Պ', LSHIFT(Key_Semicolon)) /* U+054a, XKB_KEY_Armenian_PE, ARMENIAN CAPITAL LETTER PEH */ \ + OP(L'Ջ', LSHIFT(Key_A)) /* U+054b, XKB_KEY_Armenian_JE, ARMENIAN CAPITAL LETTER JHEH */ \ + OP(L'Ռ', LSHIFT(Key_Slash)) /* U+054c, XKB_KEY_Armenian_RA, ARMENIAN CAPITAL LETTER RA */ \ + OP(L'Ս', LSHIFT(Key_R)) /* U+054d, XKB_KEY_Armenian_SE, ARMENIAN CAPITAL LETTER SEH */ \ + OP(L'Վ', LSHIFT(Key_S)) /* U+054e, XKB_KEY_Armenian_VEV, ARMENIAN CAPITAL LETTER VEW */ \ + OP(L'Տ', LSHIFT(Key_K)) /* U+054f, XKB_KEY_Armenian_TYUN, ARMENIAN CAPITAL LETTER TIWN */ \ + OP(L'Ր', LSHIFT(Key_Quote)) /* U+0550, XKB_KEY_Armenian_RE, ARMENIAN CAPITAL LETTER REH */ \ + OP(L'Ց', LSHIFT(Key_RightBracket)) /* U+0551, XKB_KEY_Armenian_TSO, ARMENIAN CAPITAL LETTER CO */ \ + OP(L'Ւ', LSHIFT(Key_U)) /* U+0552, XKB_KEY_Armenian_VYUN, ARMENIAN CAPITAL LETTER YIWN */ \ + OP(L'Փ', LSHIFT(Key_W)) /* U+0553, XKB_KEY_Armenian_PYUR, ARMENIAN CAPITAL LETTER PIWR */ \ + OP(L'Ք', LSHIFT(Key_M)) /* U+0554, XKB_KEY_Armenian_KE, ARMENIAN CAPITAL LETTER KEH */ \ + OP(L'Օ', LSHIFT(Key_0)) /* U+0555, XKB_KEY_Armenian_O, ARMENIAN CAPITAL LETTER OH */ \ + OP(L'Ֆ', LSHIFT(Key_1)) /* U+0556, XKB_KEY_Armenian_FE, ARMENIAN CAPITAL LETTER FEH */ \ + OP(L'՚', LSHIFT(Key_8)) /* U+055a, XKB_KEY_Armenian_apostrophe, ARMENIAN APOSTROPHE */ \ + OP(L'՛', Key_8) /* U+055b, XKB_KEY_Armenian_accent, ARMENIAN EMPHASIS MARK */ \ + OP(L'՜', LSHIFT(Key_Backtick)) /* U+055c, XKB_KEY_Armenian_exclam, ARMENIAN EXCLAMATION MARK */ \ + OP(L'՝', Key_Backtick) /* U+055d, XKB_KEY_Armenian_separation_mark, ARMENIAN COMMA */ \ + OP(L'՞', Key_6) /* U+055e, XKB_KEY_Armenian_question, ARMENIAN QUESTION MARK */ \ + OP(L'ա', Key_G) /* U+0561, XKB_KEY_Armenian_ayb, ARMENIAN SMALL LETTER AYB */ \ + OP(L'բ', Key_E) /* U+0562, XKB_KEY_Armenian_ben, ARMENIAN SMALL LETTER BEN */ \ + OP(L'գ', Key_D) /* U+0563, XKB_KEY_Armenian_gim, ARMENIAN SMALL LETTER GIM */ \ + OP(L'դ', Key_X) /* U+0564, XKB_KEY_Armenian_da, ARMENIAN SMALL LETTER DA */ \ + OP(L'ե', Key_F) /* U+0565, XKB_KEY_Armenian_yech, ARMENIAN SMALL LETTER ECH */ \ + OP(L'զ', Key_B) /* U+0566, XKB_KEY_Armenian_za, ARMENIAN SMALL LETTER ZA */ \ + OP(L'է', Key_Minus) /* U+0567, XKB_KEY_Armenian_e, ARMENIAN SMALL LETTER EH */ \ + OP(L'ը', Key_O) /* U+0568, XKB_KEY_Armenian_at, ARMENIAN SMALL LETTER ET */ \ + OP(L'թ', Key_P) /* U+0569, XKB_KEY_Armenian_to, ARMENIAN SMALL LETTER TO */ \ + OP(L'ժ', Key_Z) /* U+056a, XKB_KEY_Armenian_zhe, ARMENIAN SMALL LETTER ZHE */ \ + OP(L'ի', Key_J) /* U+056b, XKB_KEY_Armenian_ini, ARMENIAN SMALL LETTER INI */ \ + OP(L'լ', Key_N) /* U+056c, XKB_KEY_Armenian_lyun, ARMENIAN SMALL LETTER LIWN */ \ + OP(L'խ', Key_Comma) /* U+056d, XKB_KEY_Armenian_khe, ARMENIAN SMALL LETTER XEH */ \ + OP(L'ծ', Key_LeftBracket) /* U+056e, XKB_KEY_Armenian_tsa, ARMENIAN SMALL LETTER CA */ \ + OP(L'կ', Key_I) /* U+056f, XKB_KEY_Armenian_ken, ARMENIAN SMALL LETTER KEN */ \ + OP(L'հ', Key_L) /* U+0570, XKB_KEY_Armenian_ho, ARMENIAN SMALL LETTER HO */ \ + OP(L'ձ', Key_2) /* U+0571, XKB_KEY_Armenian_dza, ARMENIAN SMALL LETTER JA */ \ + OP(L'ղ', Key_Equals) /* U+0572, XKB_KEY_Armenian_ghat, ARMENIAN SMALL LETTER GHAD */ \ + OP(L'ճ', Key_Q) /* U+0573, XKB_KEY_Armenian_tche, ARMENIAN SMALL LETTER CHEH */ \ + OP(L'մ', Key_T) /* U+0574, XKB_KEY_Armenian_men, ARMENIAN SMALL LETTER MEN */ \ + OP(L'յ', Key_V) /* U+0575, XKB_KEY_Armenian_hi, ARMENIAN SMALL LETTER YI */ \ + OP(L'ն', Key_H) /* U+0576, XKB_KEY_Armenian_nu, ARMENIAN SMALL LETTER NOW */ \ + OP(L'շ', Key_Period) /* U+0577, XKB_KEY_Armenian_sha, ARMENIAN SMALL LETTER SHA */ \ + OP(L'ո', Key_Y) /* U+0578, XKB_KEY_Armenian_vo, ARMENIAN SMALL LETTER VO */ \ + OP(L'չ', Key_C) /* U+0579, XKB_KEY_Armenian_cha, ARMENIAN SMALL LETTER CHA */ \ + OP(L'պ', Key_Semicolon) /* U+057a, XKB_KEY_Armenian_pe, ARMENIAN SMALL LETTER PEH */ \ + OP(L'ջ', Key_A) /* U+057b, XKB_KEY_Armenian_je, ARMENIAN SMALL LETTER JHEH */ \ + OP(L'ռ', Key_Slash) /* U+057c, XKB_KEY_Armenian_ra, ARMENIAN SMALL LETTER RA */ \ + OP(L'ս', Key_R) /* U+057d, XKB_KEY_Armenian_se, ARMENIAN SMALL LETTER SEH */ \ + OP(L'վ', Key_S) /* U+057e, XKB_KEY_Armenian_vev, ARMENIAN SMALL LETTER VEW */ \ + OP(L'տ', Key_K) /* U+057f, XKB_KEY_Armenian_tyun, ARMENIAN SMALL LETTER TIWN */ \ + OP(L'ր', Key_Quote) /* U+0580, XKB_KEY_Armenian_re, ARMENIAN SMALL LETTER REH */ \ + OP(L'ց', Key_RightBracket) /* U+0581, XKB_KEY_Armenian_tso, ARMENIAN SMALL LETTER CO */ \ + OP(L'ւ', Key_U) /* U+0582, XKB_KEY_Armenian_vyun, ARMENIAN SMALL LETTER YIWN */ \ + OP(L'փ', Key_W) /* U+0583, XKB_KEY_Armenian_pyur, ARMENIAN SMALL LETTER PIWR */ \ + OP(L'ք', Key_M) /* U+0584, XKB_KEY_Armenian_ke, ARMENIAN SMALL LETTER KEH */ \ + OP(L'օ', Key_0) /* U+0585, XKB_KEY_Armenian_o, ARMENIAN SMALL LETTER OH */ \ + OP(L'ֆ', Key_1) /* U+0586, XKB_KEY_Armenian_fe, ARMENIAN SMALL LETTER FEH */ \ + OP(L'և', LSHIFT(Key_7)) /* U+0587, XKB_KEY_Armenian_ligature_ew, ARMENIAN SMALL LIGATURE ECH YIWN */ \ + OP(L'։', Key_5) /* U+0589, XKB_KEY_Armenian_full_stop, ARMENIAN FULL STOP */ \ + OP(L'֊', Key_3) /* U+058a, XKB_KEY_Armenian_hyphen, ARMENIAN HYPHEN */ \ + OP(L'—', LSHIFT(Key_3)) \ + OP(L'․', Key_7) \ + OP(L'…', LSHIFT(Key_5)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_Armenian_AT, LSHIFT(Key_O)) \ + OP(XKB_KEY_Armenian_AYB, LSHIFT(Key_G)) \ + OP(XKB_KEY_Armenian_BEN, LSHIFT(Key_E)) \ + OP(XKB_KEY_Armenian_CHA, LSHIFT(Key_C)) \ + OP(XKB_KEY_Armenian_DA, LSHIFT(Key_X)) \ + OP(XKB_KEY_Armenian_DZA, LSHIFT(Key_2)) \ + OP(XKB_KEY_Armenian_E, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Armenian_FE, LSHIFT(Key_1)) \ + OP(XKB_KEY_Armenian_GHAT, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Armenian_GIM, LSHIFT(Key_D)) \ + OP(XKB_KEY_Armenian_HI, LSHIFT(Key_V)) \ + OP(XKB_KEY_Armenian_HO, LSHIFT(Key_L)) \ + OP(XKB_KEY_Armenian_INI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Armenian_JE, LSHIFT(Key_A)) \ + OP(XKB_KEY_Armenian_KE, LSHIFT(Key_M)) \ + OP(XKB_KEY_Armenian_KEN, LSHIFT(Key_I)) \ + OP(XKB_KEY_Armenian_KHE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Armenian_LYUN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Armenian_MEN, LSHIFT(Key_T)) \ + OP(XKB_KEY_Armenian_NU, LSHIFT(Key_H)) \ + OP(XKB_KEY_Armenian_O, LSHIFT(Key_0)) \ + OP(XKB_KEY_Armenian_PE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Armenian_PYUR, LSHIFT(Key_W)) \ + OP(XKB_KEY_Armenian_RA, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Armenian_RE, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Armenian_SE, LSHIFT(Key_R)) \ + OP(XKB_KEY_Armenian_SHA, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Armenian_TCHE, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Armenian_TO, LSHIFT(Key_P)) \ + OP(XKB_KEY_Armenian_TSA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Armenian_TSO, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Armenian_TYUN, LSHIFT(Key_K)) \ + OP(XKB_KEY_Armenian_VEV, LSHIFT(Key_S)) \ + OP(XKB_KEY_Armenian_VO, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Armenian_VYUN, LSHIFT(Key_U)) \ + OP(XKB_KEY_Armenian_YECH, LSHIFT(Key_F)) \ + OP(XKB_KEY_Armenian_ZA, LSHIFT(Key_B)) \ + OP(XKB_KEY_Armenian_ZHE, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Armenian_accent, Key_8) \ + OP(XKB_KEY_Armenian_apostrophe, LSHIFT(Key_8)) \ + OP(XKB_KEY_Armenian_at, Key_O) \ + OP(XKB_KEY_Armenian_ayb, Key_G) \ + OP(XKB_KEY_Armenian_ben, Key_E) \ + OP(XKB_KEY_Armenian_cha, Key_C) \ + OP(XKB_KEY_Armenian_da, Key_X) \ + OP(XKB_KEY_Armenian_dza, Key_2) \ + OP(XKB_KEY_Armenian_e, Key_Minus) \ + OP(XKB_KEY_Armenian_exclam, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Armenian_fe, Key_1) \ + OP(XKB_KEY_Armenian_full_stop, Key_5) \ + OP(XKB_KEY_Armenian_ghat, Key_Equals) \ + OP(XKB_KEY_Armenian_gim, Key_D) \ + OP(XKB_KEY_Armenian_hi, Key_V) \ + OP(XKB_KEY_Armenian_ho, Key_L) \ + OP(XKB_KEY_Armenian_hyphen, Key_3) \ + OP(XKB_KEY_Armenian_ini, Key_J) \ + OP(XKB_KEY_Armenian_je, Key_A) \ + OP(XKB_KEY_Armenian_ke, Key_M) \ + OP(XKB_KEY_Armenian_ken, Key_I) \ + OP(XKB_KEY_Armenian_khe, Key_Comma) \ + OP(XKB_KEY_Armenian_ligature_ew, LSHIFT(Key_7)) \ + OP(XKB_KEY_Armenian_lyun, Key_N) \ + OP(XKB_KEY_Armenian_men, Key_T) \ + OP(XKB_KEY_Armenian_nu, Key_H) \ + OP(XKB_KEY_Armenian_o, Key_0) \ + OP(XKB_KEY_Armenian_pe, Key_Semicolon) \ + OP(XKB_KEY_Armenian_pyur, Key_W) \ + OP(XKB_KEY_Armenian_question, Key_6) \ + OP(XKB_KEY_Armenian_ra, Key_Slash) \ + OP(XKB_KEY_Armenian_re, Key_Quote) \ + OP(XKB_KEY_Armenian_se, Key_R) \ + OP(XKB_KEY_Armenian_separation_mark, Key_Backtick) \ + OP(XKB_KEY_Armenian_sha, Key_Period) \ + OP(XKB_KEY_Armenian_tche, Key_Q) \ + OP(XKB_KEY_Armenian_to, Key_P) \ + OP(XKB_KEY_Armenian_tsa, Key_LeftBracket) \ + OP(XKB_KEY_Armenian_tso, Key_RightBracket) \ + OP(XKB_KEY_Armenian_tyun, Key_K) \ + OP(XKB_KEY_Armenian_vev, Key_S) \ + OP(XKB_KEY_Armenian_vo, Key_Y) \ + OP(XKB_KEY_Armenian_vyun, Key_U) \ + OP(XKB_KEY_Armenian_yech, Key_F) \ + OP(XKB_KEY_Armenian_za, Key_B) \ + OP(XKB_KEY_Armenian_zhe, Key_Z) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_comma, Key_4) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_guillemotleft, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_guillemotright, Key_NonUsPound) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, Key_9) \ + OP(XKB_KEY_percent, LSHIFT(Key_6)) \ + OP(XKB_KEY_question, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace am { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace am +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/am/western/keymap.h b/src/kaleidoscope/host_keymap/linux/am/western/keymap.h new file mode 100644 index 0000000000..bf52300a0f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/am/western/keymap.h @@ -0,0 +1,375 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: am +// variant: western + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_5) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_7) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_4)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_5)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_6)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_5) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_7) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_4)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_5)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_6)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'«', Key_8) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', Key_9) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Ա', LSHIFT(Key_A)) /* U+0531, XKB_KEY_Armenian_AYB, ARMENIAN CAPITAL LETTER AYB */ \ + OP(L'Բ', LSHIFT(Key_P)) /* U+0532, XKB_KEY_Armenian_BEN, ARMENIAN CAPITAL LETTER BEN */ \ + OP(L'Գ', LSHIFT(Key_C)) /* U+0533, XKB_KEY_Armenian_GIM, ARMENIAN CAPITAL LETTER GIM */ \ + OP(L'Դ', LSHIFT(Key_T)) /* U+0534, XKB_KEY_Armenian_DA, ARMENIAN CAPITAL LETTER DA */ \ + OP(L'Ե', LSHIFT(Key_Y)) /* U+0535, XKB_KEY_Armenian_YECH, ARMENIAN CAPITAL LETTER ECH */ \ + OP(L'Զ', LSHIFT(Key_Z)) /* U+0536, XKB_KEY_Armenian_ZA, ARMENIAN CAPITAL LETTER ZA */ \ + OP(L'Է', LSHIFT(Key_E)) /* U+0537, XKB_KEY_Armenian_E, ARMENIAN CAPITAL LETTER EH */ \ + OP(L'Ը', LSHIFT(Key_U)) /* U+0538, XKB_KEY_Armenian_AT, ARMENIAN CAPITAL LETTER ET */ \ + OP(L'Թ', LSHIFT(Key_Semicolon)) /* U+0539, XKB_KEY_Armenian_TO, ARMENIAN CAPITAL LETTER TO */ \ + OP(L'Ժ', LSHIFT(Key_Equals)) /* U+053a, XKB_KEY_Armenian_ZHE, ARMENIAN CAPITAL LETTER ZHE */ \ + OP(L'Ի', LSHIFT(Key_I)) /* U+053b, XKB_KEY_Armenian_INI, ARMENIAN CAPITAL LETTER INI */ \ + OP(L'Լ', LSHIFT(Key_L)) /* U+053c, XKB_KEY_Armenian_LYUN, ARMENIAN CAPITAL LETTER LIWN */ \ + OP(L'Խ', LSHIFT(Key_Q)) /* U+053d, XKB_KEY_Armenian_KHE, ARMENIAN CAPITAL LETTER XEH */ \ + OP(L'Ծ', LSHIFT(Key_Slash)) /* U+053e, XKB_KEY_Armenian_TSA, ARMENIAN CAPITAL LETTER CA */ \ + OP(L'Կ', LSHIFT(Key_G)) /* U+053f, XKB_KEY_Armenian_KEN, ARMENIAN CAPITAL LETTER KEN */ \ + OP(L'Հ', LSHIFT(Key_H)) /* U+0540, XKB_KEY_Armenian_HO, ARMENIAN CAPITAL LETTER HO */ \ + OP(L'Ձ', LSHIFT(Key_2)) /* U+0541, XKB_KEY_Armenian_DZA, ARMENIAN CAPITAL LETTER JA */ \ + OP(L'Ղ', LSHIFT(Key_Period)) /* U+0542, XKB_KEY_Armenian_GHAT, ARMENIAN CAPITAL LETTER GHAD */ \ + OP(L'Ճ', LSHIFT(Key_J)) /* U+0543, XKB_KEY_Armenian_TCHE, ARMENIAN CAPITAL LETTER CHEH */ \ + OP(L'Մ', LSHIFT(Key_M)) /* U+0544, XKB_KEY_Armenian_MEN, ARMENIAN CAPITAL LETTER MEN */ \ + OP(L'Յ', LSHIFT(Key_3)) /* U+0545, XKB_KEY_Armenian_HI, ARMENIAN CAPITAL LETTER YI */ \ + OP(L'Ն', LSHIFT(Key_N)) /* U+0546, XKB_KEY_Armenian_NU, ARMENIAN CAPITAL LETTER NOW */ \ + OP(L'Շ', LSHIFT(Key_Comma)) /* U+0547, XKB_KEY_Armenian_SHA, ARMENIAN CAPITAL LETTER SHA */ \ + OP(L'Ո', LSHIFT(Key_O)) /* U+0548, XKB_KEY_Armenian_VO, ARMENIAN CAPITAL LETTER VO */ \ + OP(L'Չ', LSHIFT(Key_LeftBracket)) /* U+0549, XKB_KEY_Armenian_CHA, ARMENIAN CAPITAL LETTER CHA */ \ + OP(L'Պ', LSHIFT(Key_B)) /* U+054a, XKB_KEY_Armenian_PE, ARMENIAN CAPITAL LETTER PEH */ \ + OP(L'Ջ', LSHIFT(Key_RightBracket)) /* U+054b, XKB_KEY_Armenian_JE, ARMENIAN CAPITAL LETTER JHEH */ \ + OP(L'Ռ', LSHIFT(Key_Minus)) /* U+054c, XKB_KEY_Armenian_RA, ARMENIAN CAPITAL LETTER RA */ \ + OP(L'Ս', LSHIFT(Key_S)) /* U+054d, XKB_KEY_Armenian_SE, ARMENIAN CAPITAL LETTER SEH */ \ + OP(L'Վ', LSHIFT(Key_W)) /* U+054e, XKB_KEY_Armenian_VEV, ARMENIAN CAPITAL LETTER VEW */ \ + OP(L'Տ', LSHIFT(Key_D)) /* U+054f, XKB_KEY_Armenian_TYUN, ARMENIAN CAPITAL LETTER TIWN */ \ + OP(L'Ր', LSHIFT(Key_R)) /* U+0550, XKB_KEY_Armenian_RE, ARMENIAN CAPITAL LETTER REH */ \ + OP(L'Ց', LSHIFT(Key_X)) /* U+0551, XKB_KEY_Armenian_TSO, ARMENIAN CAPITAL LETTER CO */ \ + OP(L'Ւ', LSHIFT(Key_V)) /* U+0552, XKB_KEY_Armenian_VYUN, ARMENIAN CAPITAL LETTER YIWN */ \ + OP(L'Փ', LSHIFT(Key_Quote)) /* U+0553, XKB_KEY_Armenian_PYUR, ARMENIAN CAPITAL LETTER PIWR */ \ + OP(L'Ք', LSHIFT(Key_K)) /* U+0554, XKB_KEY_Armenian_KE, ARMENIAN CAPITAL LETTER KEH */ \ + OP(L'Օ', LSHIFT(Key_0)) /* U+0555, XKB_KEY_Armenian_O, ARMENIAN CAPITAL LETTER OH */ \ + OP(L'Ֆ', LSHIFT(Key_F)) /* U+0556, XKB_KEY_Armenian_FE, ARMENIAN CAPITAL LETTER FEH */ \ + OP(L'՛', Key_4) /* U+055b, XKB_KEY_Armenian_accent, ARMENIAN EMPHASIS MARK */ \ + OP(L'՜', LSHIFT(Key_Backtick)) /* U+055c, XKB_KEY_Armenian_exclam, ARMENIAN EXCLAMATION MARK */ \ + OP(L'՝', Key_Backtick) /* U+055d, XKB_KEY_Armenian_separation_mark, ARMENIAN COMMA */ \ + OP(L'՞', LSHIFT(Key_NonUsPound)) /* U+055e, XKB_KEY_Armenian_question, ARMENIAN QUESTION MARK */ \ + OP(L'ա', Key_A) /* U+0561, XKB_KEY_Armenian_ayb, ARMENIAN SMALL LETTER AYB */ \ + OP(L'բ', Key_P) /* U+0562, XKB_KEY_Armenian_ben, ARMENIAN SMALL LETTER BEN */ \ + OP(L'գ', Key_C) /* U+0563, XKB_KEY_Armenian_gim, ARMENIAN SMALL LETTER GIM */ \ + OP(L'դ', Key_T) /* U+0564, XKB_KEY_Armenian_da, ARMENIAN SMALL LETTER DA */ \ + OP(L'ե', Key_Y) /* U+0565, XKB_KEY_Armenian_yech, ARMENIAN SMALL LETTER ECH */ \ + OP(L'զ', Key_Z) /* U+0566, XKB_KEY_Armenian_za, ARMENIAN SMALL LETTER ZA */ \ + OP(L'է', Key_E) /* U+0567, XKB_KEY_Armenian_e, ARMENIAN SMALL LETTER EH */ \ + OP(L'ը', Key_U) /* U+0568, XKB_KEY_Armenian_at, ARMENIAN SMALL LETTER ET */ \ + OP(L'թ', Key_Semicolon) /* U+0569, XKB_KEY_Armenian_to, ARMENIAN SMALL LETTER TO */ \ + OP(L'ժ', Key_Equals) /* U+056a, XKB_KEY_Armenian_zhe, ARMENIAN SMALL LETTER ZHE */ \ + OP(L'ի', Key_I) /* U+056b, XKB_KEY_Armenian_ini, ARMENIAN SMALL LETTER INI */ \ + OP(L'լ', Key_L) /* U+056c, XKB_KEY_Armenian_lyun, ARMENIAN SMALL LETTER LIWN */ \ + OP(L'խ', Key_Q) /* U+056d, XKB_KEY_Armenian_khe, ARMENIAN SMALL LETTER XEH */ \ + OP(L'ծ', Key_Slash) /* U+056e, XKB_KEY_Armenian_tsa, ARMENIAN SMALL LETTER CA */ \ + OP(L'կ', Key_G) /* U+056f, XKB_KEY_Armenian_ken, ARMENIAN SMALL LETTER KEN */ \ + OP(L'հ', Key_H) /* U+0570, XKB_KEY_Armenian_ho, ARMENIAN SMALL LETTER HO */ \ + OP(L'ձ', Key_2) /* U+0571, XKB_KEY_Armenian_dza, ARMENIAN SMALL LETTER JA */ \ + OP(L'ղ', Key_Period) /* U+0572, XKB_KEY_Armenian_ghat, ARMENIAN SMALL LETTER GHAD */ \ + OP(L'ճ', Key_J) /* U+0573, XKB_KEY_Armenian_tche, ARMENIAN SMALL LETTER CHEH */ \ + OP(L'մ', Key_M) /* U+0574, XKB_KEY_Armenian_men, ARMENIAN SMALL LETTER MEN */ \ + OP(L'յ', Key_3) /* U+0575, XKB_KEY_Armenian_hi, ARMENIAN SMALL LETTER YI */ \ + OP(L'ն', Key_N) /* U+0576, XKB_KEY_Armenian_nu, ARMENIAN SMALL LETTER NOW */ \ + OP(L'շ', Key_Comma) /* U+0577, XKB_KEY_Armenian_sha, ARMENIAN SMALL LETTER SHA */ \ + OP(L'ո', Key_O) /* U+0578, XKB_KEY_Armenian_vo, ARMENIAN SMALL LETTER VO */ \ + OP(L'չ', Key_LeftBracket) /* U+0579, XKB_KEY_Armenian_cha, ARMENIAN SMALL LETTER CHA */ \ + OP(L'պ', Key_B) /* U+057a, XKB_KEY_Armenian_pe, ARMENIAN SMALL LETTER PEH */ \ + OP(L'ջ', Key_RightBracket) /* U+057b, XKB_KEY_Armenian_je, ARMENIAN SMALL LETTER JHEH */ \ + OP(L'ռ', Key_Minus) /* U+057c, XKB_KEY_Armenian_ra, ARMENIAN SMALL LETTER RA */ \ + OP(L'ս', Key_S) /* U+057d, XKB_KEY_Armenian_se, ARMENIAN SMALL LETTER SEH */ \ + OP(L'վ', Key_W) /* U+057e, XKB_KEY_Armenian_vev, ARMENIAN SMALL LETTER VEW */ \ + OP(L'տ', Key_D) /* U+057f, XKB_KEY_Armenian_tyun, ARMENIAN SMALL LETTER TIWN */ \ + OP(L'ր', Key_R) /* U+0580, XKB_KEY_Armenian_re, ARMENIAN SMALL LETTER REH */ \ + OP(L'ց', Key_X) /* U+0581, XKB_KEY_Armenian_tso, ARMENIAN SMALL LETTER CO */ \ + OP(L'ւ', Key_V) /* U+0582, XKB_KEY_Armenian_vyun, ARMENIAN SMALL LETTER YIWN */ \ + OP(L'փ', Key_Quote) /* U+0583, XKB_KEY_Armenian_pyur, ARMENIAN SMALL LETTER PIWR */ \ + OP(L'ք', Key_K) /* U+0584, XKB_KEY_Armenian_ke, ARMENIAN SMALL LETTER KEH */ \ + OP(L'օ', Key_0) /* U+0585, XKB_KEY_Armenian_o, ARMENIAN SMALL LETTER OH */ \ + OP(L'ֆ', Key_F) /* U+0586, XKB_KEY_Armenian_fe, ARMENIAN SMALL LETTER FEH */ \ + OP(L'և', LSHIFT(Key_7)) /* U+0587, XKB_KEY_Armenian_ligature_ew, ARMENIAN SMALL LIGATURE ECH YIWN */ \ + OP(L'։', Key_1) /* U+0589, XKB_KEY_Armenian_full_stop, ARMENIAN FULL STOP */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_Armenian_AT, LSHIFT(Key_U)) \ + OP(XKB_KEY_Armenian_AYB, LSHIFT(Key_A)) \ + OP(XKB_KEY_Armenian_BEN, LSHIFT(Key_P)) \ + OP(XKB_KEY_Armenian_CHA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Armenian_DA, LSHIFT(Key_T)) \ + OP(XKB_KEY_Armenian_DZA, LSHIFT(Key_2)) \ + OP(XKB_KEY_Armenian_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Armenian_FE, LSHIFT(Key_F)) \ + OP(XKB_KEY_Armenian_GHAT, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Armenian_GIM, LSHIFT(Key_C)) \ + OP(XKB_KEY_Armenian_HI, LSHIFT(Key_3)) \ + OP(XKB_KEY_Armenian_HO, LSHIFT(Key_H)) \ + OP(XKB_KEY_Armenian_INI, LSHIFT(Key_I)) \ + OP(XKB_KEY_Armenian_JE, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Armenian_KE, LSHIFT(Key_K)) \ + OP(XKB_KEY_Armenian_KEN, LSHIFT(Key_G)) \ + OP(XKB_KEY_Armenian_KHE, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Armenian_LYUN, LSHIFT(Key_L)) \ + OP(XKB_KEY_Armenian_MEN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Armenian_NU, LSHIFT(Key_N)) \ + OP(XKB_KEY_Armenian_O, LSHIFT(Key_0)) \ + OP(XKB_KEY_Armenian_PE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Armenian_PYUR, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Armenian_RA, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Armenian_RE, LSHIFT(Key_R)) \ + OP(XKB_KEY_Armenian_SE, LSHIFT(Key_S)) \ + OP(XKB_KEY_Armenian_SHA, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Armenian_TCHE, LSHIFT(Key_J)) \ + OP(XKB_KEY_Armenian_TO, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Armenian_TSA, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Armenian_TSO, LSHIFT(Key_X)) \ + OP(XKB_KEY_Armenian_TYUN, LSHIFT(Key_D)) \ + OP(XKB_KEY_Armenian_VEV, LSHIFT(Key_W)) \ + OP(XKB_KEY_Armenian_VO, LSHIFT(Key_O)) \ + OP(XKB_KEY_Armenian_VYUN, LSHIFT(Key_V)) \ + OP(XKB_KEY_Armenian_YECH, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Armenian_ZA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Armenian_ZHE, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Armenian_accent, Key_4) \ + OP(XKB_KEY_Armenian_at, Key_U) \ + OP(XKB_KEY_Armenian_ayb, Key_A) \ + OP(XKB_KEY_Armenian_ben, Key_P) \ + OP(XKB_KEY_Armenian_cha, Key_LeftBracket) \ + OP(XKB_KEY_Armenian_da, Key_T) \ + OP(XKB_KEY_Armenian_dza, Key_2) \ + OP(XKB_KEY_Armenian_e, Key_E) \ + OP(XKB_KEY_Armenian_exclam, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Armenian_fe, Key_F) \ + OP(XKB_KEY_Armenian_full_stop, Key_1) \ + OP(XKB_KEY_Armenian_ghat, Key_Period) \ + OP(XKB_KEY_Armenian_gim, Key_C) \ + OP(XKB_KEY_Armenian_hi, Key_3) \ + OP(XKB_KEY_Armenian_ho, Key_H) \ + OP(XKB_KEY_Armenian_ini, Key_I) \ + OP(XKB_KEY_Armenian_je, Key_RightBracket) \ + OP(XKB_KEY_Armenian_ke, Key_K) \ + OP(XKB_KEY_Armenian_ken, Key_G) \ + OP(XKB_KEY_Armenian_khe, Key_Q) \ + OP(XKB_KEY_Armenian_ligature_ew, LSHIFT(Key_7)) \ + OP(XKB_KEY_Armenian_lyun, Key_L) \ + OP(XKB_KEY_Armenian_men, Key_M) \ + OP(XKB_KEY_Armenian_nu, Key_N) \ + OP(XKB_KEY_Armenian_o, Key_0) \ + OP(XKB_KEY_Armenian_pe, Key_B) \ + OP(XKB_KEY_Armenian_pyur, Key_Quote) \ + OP(XKB_KEY_Armenian_question, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Armenian_ra, Key_Minus) \ + OP(XKB_KEY_Armenian_re, Key_R) \ + OP(XKB_KEY_Armenian_se, Key_S) \ + OP(XKB_KEY_Armenian_separation_mark, Key_Backtick) \ + OP(XKB_KEY_Armenian_sha, Key_Comma) \ + OP(XKB_KEY_Armenian_tche, Key_J) \ + OP(XKB_KEY_Armenian_to, Key_Semicolon) \ + OP(XKB_KEY_Armenian_tsa, Key_Slash) \ + OP(XKB_KEY_Armenian_tso, Key_X) \ + OP(XKB_KEY_Armenian_tyun, Key_D) \ + OP(XKB_KEY_Armenian_vev, Key_W) \ + OP(XKB_KEY_Armenian_vo, Key_O) \ + OP(XKB_KEY_Armenian_vyun, Key_V) \ + OP(XKB_KEY_Armenian_yech, Key_Y) \ + OP(XKB_KEY_Armenian_za, Key_Z) \ + OP(XKB_KEY_Armenian_zhe, Key_Equals) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_4)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_5)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_6)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_comma, Key_5) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, Key_8) \ + OP(XKB_KEY_guillemotright, Key_9) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_period, Key_7) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace am { +namespace western { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace western +} // namespace am +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/apl/apl2/keymap.h b/src/kaleidoscope/host_keymap/linux/apl/apl2/keymap.h new file mode 100644 index 0000000000..511d3569ca --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/apl/apl2/keymap.h @@ -0,0 +1,304 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: apl +// variant: apl2 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', RALT(Key_Minus)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('\'', Key_K) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_Semicolon)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_Quote)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_P) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_3) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_5) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', Key_7) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', Key_Q) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('[', Key_Semicolon) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', LSHIFT(Key_Slash)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Quote) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', Key_F) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', Key_M) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('~', Key_T) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', RALT(Key_Minus)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'\'', Key_K) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_Semicolon)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_Quote)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_P) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_3) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_5) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', Key_7) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', Key_Q) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'[', Key_Semicolon) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', LSHIFT(Key_Slash)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Quote) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', Key_F) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', Key_M) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'~', Key_T) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¨', Key_1) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'¯', Key_2) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'×', Key_Equals) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', LSHIFT(Key_Equals)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'←', Key_LeftBracket) \ + OP(L'↑', Key_Y) \ + OP(L'→', LSHIFT(Key_LeftBracket)) \ + OP(L'↓', Key_U) \ + OP(L'∆', Key_H) \ + OP(L'∇', Key_G) \ + OP(L'∊', Key_E) \ + OP(L'∘', Key_J) \ + OP(L'∧', Key_0) \ + OP(L'∨', Key_9) \ + OP(L'∩', Key_C) \ + OP(L'∪', Key_V) \ + OP(L'≠', Key_8) \ + OP(L'≡', Key_NonUsPound) \ + OP(L'≤', Key_4) \ + OP(L'≥', Key_6) \ + OP(L'⊂', Key_Z) \ + OP(L'⊃', Key_X) \ + OP(L'⊖', RALT(Key_7)) \ + OP(L'⊤', Key_N) \ + OP(L'⊥', Key_B) \ + OP(L'⌈', Key_S) \ + OP(L'⌊', Key_D) \ + OP(L'⌶', RALT(Key_1)) \ + OP(L'⌷', Key_RightBracket) \ + OP(L'⌹', RALT(Key_Equals)) \ + OP(L'⌻', LSHIFT(Key_Backtick)) \ + OP(L'⌽', RALT(Key_5)) \ + OP(L'⌿', RALT(Key_Slash)) \ + OP(L'⍀', RALT(Key_Period)) \ + OP(L'⍂', RALT(Key_Backtick)) \ + OP(L'⍉', RALT(Key_6)) \ + OP(L'⍋', RALT(Key_4)) \ + OP(L'⍎', RALT(Key_Semicolon)) \ + OP(L'⍓', RALT(Key_3)) \ + OP(L'⍕', RALT(Key_Quote)) \ + OP(L'⍙', RALT(Key_RightBracket)) \ + OP(L'⍝', RALT(Key_Comma)) \ + OP(L'⍞', RALT(Key_LeftBracket)) \ + OP(L'⍟', RALT(Key_8)) \ + OP(L'⍤', RALT(Key_NonUsPound)) \ + OP(L'⍫', RALT(Key_2)) \ + OP(L'⍱', RALT(Key_9)) \ + OP(L'⍲', RALT(Key_0)) \ + OP(L'⍳', Key_I) \ + OP(L'⍴', Key_R) \ + OP(L'⍵', Key_W) \ + OP(L'⍷', LSHIFT(Key_NonUsPound)) \ + OP(L'⍸', LSHIFT(Key_RightBracket)) \ + OP(L'⍺', Key_A) \ + OP(L'⎕', Key_L) \ + OP(L'○', Key_O) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_K) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, Key_T) \ + OP(XKB_KEY_asterisk, Key_P) \ + OP(XKB_KEY_backslash, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_bar, Key_M) \ + OP(XKB_KEY_bracketleft, Key_Semicolon) \ + OP(XKB_KEY_bracketright, Key_Quote) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_diaeresis, Key_1) \ + OP(XKB_KEY_division, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_equal, Key_5) \ + OP(XKB_KEY_exclam, RALT(Key_Minus)) \ + OP(XKB_KEY_greater, Key_7) \ + OP(XKB_KEY_less, Key_3) \ + OP(XKB_KEY_macron, Key_2) \ + OP(XKB_KEY_minus, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_multiply, Key_Equals) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_question, Key_Q) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, Key_F) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace apl { +namespace apl2 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace apl2 +} // namespace apl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/apl/aplplusII/keymap.h b/src/kaleidoscope/host_keymap/linux/apl/aplplusII/keymap.h new file mode 100644 index 0000000000..84320d4be9 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/apl/aplplusII/keymap.h @@ -0,0 +1,306 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: apl +// variant: aplplusII + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', RALT(Key_Minus)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('$', Key_Backtick) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('\'', Key_K) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_Semicolon)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_Quote)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_P) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_3) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_5) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', Key_7) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', Key_Q) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('[', Key_Semicolon) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', LSHIFT(Key_Slash)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Quote) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', Key_F) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', Key_M) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('~', Key_T) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', RALT(Key_Minus)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'$', Key_Backtick) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'\'', Key_K) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_Semicolon)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_Quote)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_P) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_3) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_5) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', Key_7) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', Key_Q) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'[', Key_Semicolon) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', LSHIFT(Key_Slash)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Quote) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', Key_F) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', Key_M) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'~', Key_T) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¨', Key_1) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'¯', Key_2) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'×', Key_Equals) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', LSHIFT(Key_Equals)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'←', Key_LeftBracket) \ + OP(L'↑', Key_Y) \ + OP(L'→', Key_RightBracket) \ + OP(L'↓', Key_U) \ + OP(L'∆', Key_H) \ + OP(L'∇', Key_G) \ + OP(L'∊', Key_E) \ + OP(L'∘', Key_J) \ + OP(L'∧', Key_0) \ + OP(L'∨', Key_9) \ + OP(L'∩', Key_C) \ + OP(L'∪', Key_V) \ + OP(L'≠', Key_8) \ + OP(L'≡', RALT(Key_1)) \ + OP(L'≤', Key_4) \ + OP(L'≥', Key_6) \ + OP(L'⊂', Key_Z) \ + OP(L'⊃', Key_X) \ + OP(L'⊖', RALT(Key_7)) \ + OP(L'⊢', Key_NonUsPound) \ + OP(L'⊣', LSHIFT(Key_NonUsPound)) \ + OP(L'⊤', Key_N) \ + OP(L'⊥', Key_B) \ + OP(L'⋄', LSHIFT(Key_Backtick)) \ + OP(L'⌈', Key_S) \ + OP(L'⌊', Key_D) \ + OP(L'⌹', RALT(Key_Equals)) \ + OP(L'⌽', RALT(Key_5)) \ + OP(L'⌿', RALT(Key_Slash)) \ + OP(L'⍀', RALT(Key_Period)) \ + OP(L'⍉', RALT(Key_6)) \ + OP(L'⍋', RALT(Key_4)) \ + OP(L'⍎', RALT(Key_Semicolon)) \ + OP(L'⍓', RALT(Key_3)) \ + OP(L'⍕', RALT(Key_Quote)) \ + OP(L'⍙', RALT(Key_NonUsPound)) \ + OP(L'⍝', RALT(Key_Comma)) \ + OP(L'⍞', RALT(Key_LeftBracket)) \ + OP(L'⍟', RALT(Key_8)) \ + OP(L'⍪', RALT(Key_Backtick)) \ + OP(L'⍫', RALT(Key_2)) \ + OP(L'⍬', RALT(Key_RightBracket)) \ + OP(L'⍱', RALT(Key_9)) \ + OP(L'⍲', RALT(Key_0)) \ + OP(L'⍳', Key_I) \ + OP(L'⍴', Key_R) \ + OP(L'⍵', Key_W) \ + OP(L'⍸', LSHIFT(Key_RightBracket)) \ + OP(L'⍺', Key_A) \ + OP(L'⎕', Key_L) \ + OP(L'○', Key_O) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_K) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, Key_T) \ + OP(XKB_KEY_asterisk, Key_P) \ + OP(XKB_KEY_backslash, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_bar, Key_M) \ + OP(XKB_KEY_bracketleft, Key_Semicolon) \ + OP(XKB_KEY_bracketright, Key_Quote) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_diaeresis, Key_1) \ + OP(XKB_KEY_division, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_dollar, Key_Backtick) \ + OP(XKB_KEY_equal, Key_5) \ + OP(XKB_KEY_exclam, RALT(Key_Minus)) \ + OP(XKB_KEY_greater, Key_7) \ + OP(XKB_KEY_less, Key_3) \ + OP(XKB_KEY_macron, Key_2) \ + OP(XKB_KEY_minus, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_multiply, Key_Equals) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_question, Key_Q) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, Key_F) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace apl { +namespace aplplusII { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace aplplusII +} // namespace apl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/apl/aplx/keymap.h b/src/kaleidoscope/host_keymap/linux/apl/aplx/keymap.h new file mode 100644 index 0000000000..0d113209b7 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/apl/aplx/keymap.h @@ -0,0 +1,277 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: apl +// variant: aplx + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_Minus)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('\'', Key_K) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('*', Key_P) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_3) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_5) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', Key_7) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', Key_Q) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('_', Key_F) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', Key_M) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('~', Key_T) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_Minus)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'\'', Key_K) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'*', Key_P) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_3) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_5) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', Key_7) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', Key_Q) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'_', Key_F) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', Key_M) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'~', Key_T) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¨', Key_1) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'¯', Key_2) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'×', Key_Minus) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', Key_Equals) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'←', Key_LeftBracket) \ + OP(L'↑', Key_Y) \ + OP(L'→', Key_RightBracket) \ + OP(L'↓', Key_U) \ + OP(L'∆', Key_H) \ + OP(L'∇', Key_G) \ + OP(L'∊', Key_E) \ + OP(L'∘', Key_J) \ + OP(L'∧', Key_0) \ + OP(L'∨', Key_9) \ + OP(L'∩', Key_C) \ + OP(L'∪', Key_V) \ + OP(L'≠', Key_8) \ + OP(L'≡', LSHIFT(Key_Semicolon)) \ + OP(L'≢', LSHIFT(Key_Quote)) /* U+2262, XKB_KEY_notidentical, NOT IDENTICAL TO */ \ + OP(L'≤', Key_4) \ + OP(L'≥', Key_6) \ + OP(L'⊂', Key_Z) \ + OP(L'⊃', Key_X) \ + OP(L'⊖', LSHIFT(Key_7)) \ + OP(L'⊢', Key_NonUsPound) \ + OP(L'⊣', LSHIFT(Key_NonUsPound)) \ + OP(L'⊤', Key_N) \ + OP(L'⊥', Key_B) \ + OP(L'⋄', Key_Backtick) \ + OP(L'⌈', Key_S) \ + OP(L'⌊', Key_D) \ + OP(L'⌶', LSHIFT(Key_1)) \ + OP(L'⌹', LSHIFT(Key_Equals)) \ + OP(L'⌽', LSHIFT(Key_5)) \ + OP(L'⌿', Key_Slash) \ + OP(L'⍀', Key_Period) \ + OP(L'⍇', LSHIFT(Key_LeftBracket)) \ + OP(L'⍈', LSHIFT(Key_RightBracket)) \ + OP(L'⍉', LSHIFT(Key_6)) \ + OP(L'⍋', LSHIFT(Key_4)) \ + OP(L'⍎', Key_Semicolon) \ + OP(L'⍓', LSHIFT(Key_3)) \ + OP(L'⍕', Key_Quote) \ + OP(L'⍝', Key_Comma) \ + OP(L'⍞', LSHIFT(Key_Backtick)) \ + OP(L'⍟', LSHIFT(Key_8)) \ + OP(L'⍤', LSHIFT(Key_Period)) \ + OP(L'⍪', LSHIFT(Key_Comma)) \ + OP(L'⍫', LSHIFT(Key_2)) \ + OP(L'⍱', LSHIFT(Key_9)) \ + OP(L'⍲', LSHIFT(Key_0)) \ + OP(L'⍳', Key_I) \ + OP(L'⍴', Key_R) \ + OP(L'⍵', Key_W) \ + OP(L'⍺', Key_A) \ + OP(L'⎕', Key_L) \ + OP(L'○', Key_O) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_K) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, Key_T) \ + OP(XKB_KEY_asterisk, Key_P) \ + OP(XKB_KEY_bar, Key_M) \ + OP(XKB_KEY_diaeresis, Key_1) \ + OP(XKB_KEY_division, Key_Equals) \ + OP(XKB_KEY_equal, Key_5) \ + OP(XKB_KEY_exclam, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_greater, Key_7) \ + OP(XKB_KEY_less, Key_3) \ + OP(XKB_KEY_macron, Key_2) \ + OP(XKB_KEY_multiply, Key_Minus) \ + OP(XKB_KEY_notidentical, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_question, Key_Q) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, Key_F) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace apl { +namespace aplx { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace aplx +} // namespace apl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/apl/dyalog/keymap.h b/src/kaleidoscope/host_keymap/linux/apl/dyalog/keymap.h new file mode 100644 index 0000000000..8607bd8425 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/apl/dyalog/keymap.h @@ -0,0 +1,300 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: apl +// variant: dyalog + +#define _HOST_KEYMAP_ASCII(OP) \ + OP(' +', Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ +OP('!', LSHIFT(Key_Minus)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ +OP('\'', Key_K) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ +OP('*', Key_P) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ +OP('+', LSHIFT(Key_KeypadAdd)) /* XKB_KEY_KP_Add */ \ +OP('-', LSHIFT(Key_KeypadSubtract)) /* XKB_KEY_KP_Subtract */ \ +OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ +OP('/', LSHIFT(Key_KeypadDivide)) /* XKB_KEY_KP_Divide */ \ +OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ +OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ +OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ +OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ +OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ +OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ +OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ +OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ +OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ +OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ +OP('<', Key_3) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ +OP('=', Key_5) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ +OP('>', Key_7) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ +OP('?', Key_Q) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ +OP('_', Key_F) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ +OP('|', Key_M) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ +OP('~', Key_T) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L' +', Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ +OP(L'!', LSHIFT(Key_Minus)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ +OP(L'\'', Key_K) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ +OP(L'*', Key_P) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ +OP(L'+', LSHIFT(Key_KeypadAdd)) /* XKB_KEY_KP_Add */ \ +OP(L'-', LSHIFT(Key_KeypadSubtract)) /* XKB_KEY_KP_Subtract */ \ +OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ +OP(L'/', LSHIFT(Key_KeypadDivide)) /* XKB_KEY_KP_Divide */ \ +OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ +OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ +OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ +OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ +OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ +OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ +OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ +OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ +OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ +OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ +OP(L'<', Key_3) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ +OP(L'=', Key_5) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ +OP(L'>', Key_7) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ +OP(L'?', Key_Q) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ +OP(L'_', Key_F) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ +OP(L'|', Key_M) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ +OP(L'~', Key_T) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ +OP(L'¨', Key_1) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ +OP(L'¯', Key_2) /* U+00af, XKB_KEY_macron, MACRON */ \ +OP(L'×', Key_Minus) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ +OP(L'÷', Key_Equals) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ +OP(L'←', Key_LeftBracket) \ +OP(L'↑', Key_Y) \ +OP(L'→', Key_RightBracket) \ +OP(L'↓', Key_U) \ +OP(L'∆', Key_H) \ +OP(L'∇', Key_G) \ +OP(L'∊', Key_E) \ +OP(L'∘', Key_J) \ +OP(L'∥', LSHIFT(Key_M)) \ +OP(L'∧', Key_0) \ +OP(L'∨', Key_9) \ +OP(L'∩', Key_C) \ +OP(L'∪', Key_V) \ +OP(L'≠', Key_8) \ +OP(L'≡', LSHIFT(Key_Semicolon)) \ +OP(L'≢', LSHIFT(Key_Quote)) /* U+2262, XKB_KEY_notidentical, NOT IDENTICAL TO */ \ +OP(L'≤', Key_4) \ +OP(L'≥', Key_6) \ +OP(L'⊂', Key_Z) \ +OP(L'⊃', Key_X) \ +OP(L'⊆', LSHIFT(Key_Z)) \ +OP(L'⊖', LSHIFT(Key_7)) \ +OP(L'⊢', Key_NonUsPound) \ +OP(L'⊣', LSHIFT(Key_NonUsPound)) \ +OP(L'⊤', Key_N) \ +OP(L'⊥', Key_B) \ +OP(L'⋄', Key_Backtick) \ +OP(L'⌈', Key_S) \ +OP(L'⌊', Key_D) \ +OP(L'⌶', LSHIFT(Key_1)) \ +OP(L'⌷', LSHIFT(Key_L)) \ +OP(L'⌸', LSHIFT(Key_K)) \ +OP(L'⌹', LSHIFT(Key_Equals)) \ +OP(L'⌺', LSHIFT(Key_Backtick)) \ +OP(L'⌽', LSHIFT(Key_5)) \ +OP(L'⌾', LSHIFT(Key_R)) \ +OP(L'⌿', Key_Slash) \ +OP(L'⍀', Key_Period) \ +OP(L'⍉', LSHIFT(Key_6)) \ +OP(L'⍋', LSHIFT(Key_4)) \ +OP(L'⍎', Key_Semicolon) \ +OP(L'⍒', LSHIFT(Key_3)) \ +OP(L'⍕', Key_Quote) \ +OP(L'⍙', LSHIFT(Key_Period)) \ +OP(L'⍝', Key_Comma) \ +OP(L'⍞', LSHIFT(Key_LeftBracket)) \ +OP(L'⍟', LSHIFT(Key_8)) \ +OP(L'⍠', LSHIFT(Key_Slash)) \ +OP(L'⍡', LSHIFT(Key_N)) \ +OP(L'⍢', LSHIFT(Key_G)) \ +OP(L'⍣', LSHIFT(Key_P)) \ +OP(L'⍤', LSHIFT(Key_J)) \ +OP(L'⍥', LSHIFT(Key_O)) \ +OP(L'⍨', LSHIFT(Key_T)) \ +OP(L'⍪', LSHIFT(Key_Comma)) \ +OP(L'⍫', LSHIFT(Key_2)) \ +OP(L'⍬', LSHIFT(Key_RightBracket)) \ +OP(L'⍭', LSHIFT(Key_B)) \ +OP(L'⍰', LSHIFT(Key_Q)) \ +OP(L'⍱', LSHIFT(Key_9)) \ +OP(L'⍲', LSHIFT(Key_0)) \ +OP(L'⍳', Key_I) \ +OP(L'⍴', Key_R) \ +OP(L'⍵', Key_W) \ +OP(L'⍷', LSHIFT(Key_E)) \ +OP(L'⍸', LSHIFT(Key_I)) \ +OP(L'⍺', Key_A) \ +OP(L'⎕', Key_L) \ +OP(L'─', Key_Keypad0) \ +OP(L'│', Key_KeypadDot) \ +OP(L'┌', Key_Keypad7) \ +OP(L'┐', Key_Keypad9) \ +OP(L'└', Key_Keypad1) \ +OP(L'┘', Key_Keypad3) \ +OP(L'├', Key_Keypad4) \ +OP(L'┤', Key_Keypad6) \ +OP(L'┬', Key_Keypad8) \ +OP(L'┴', Key_Keypad2) \ +OP(L'┼', Key_Keypad5) \ +OP(L'○', Key_O) \ +OP(L'', Key_Escape) \ +OP(L'', Key_Tab) \ +OP(L'', LSHIFT(Key_Tab)) \ +OP(L'', Key_PageUp) \ +OP(L'', Key_PageDown) \ +OP(L'', Key_End) \ +OP(L'', Key_Home) \ +OP(L'', LSHIFT(Key_PageUp)) \ +OP(L'', LSHIFT(Key_PageDown)) \ +OP(L'', LSHIFT(Key_End)) \ +OP(L'', LSHIFT(Key_Home)) \ +OP(L'', LSHIFT(Key_Delete)) \ +OP(L'', LSHIFT(Key_Insert)) \ +OP(L'', Key_KeypadDivide) \ +OP(L'', Key_KeypadMultiply) \ +OP(L'', Key_Delete) \ +OP(L'', Key_Insert) \ +OP(L'', Key_DownArrow) \ +OP(L'', Key_UpArrow) \ +OP(L'', Key_F11) \ +OP(L'', Key_RightArrow) \ +OP(L'', Key_LeftArrow) \ +OP(L'', Key_Enter) \ +OP(L'', LSHIFT(Key_Enter)) \ +OP(L'', Key_KeypadSubtract) \ +OP(L'', LSHIFT(Key_LeftArrow)) \ +OP(L'', Key_Backspace) \ +OP(L'', LSHIFT(Key_RightArrow)) \ +OP(L'', LSHIFT(Key_Backspace)) \ +OP(L'', Key_KeypadAdd) \ +OP(L'', Key_Spacebar) \ +OP(L'', LSHIFT(Key_Spacebar)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, LSHIFT(Key_KeypadAdd)) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Divide, LSHIFT(Key_KeypadDivide)) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Multiply, LSHIFT(Key_KeypadMultiply)) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Subtract, LSHIFT(Key_KeypadSubtract)) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_K) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, Key_T) \ + OP(XKB_KEY_asterisk, Key_P) \ + OP(XKB_KEY_bar, Key_M) \ + OP(XKB_KEY_diaeresis, Key_1) \ + OP(XKB_KEY_division, Key_Equals) \ + OP(XKB_KEY_equal, Key_5) \ + OP(XKB_KEY_exclam, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_greater, Key_7) \ + OP(XKB_KEY_less, Key_3) \ + OP(XKB_KEY_macron, Key_2) \ + OP(XKB_KEY_multiply, Key_Minus) \ + OP(XKB_KEY_notidentical, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_question, Key_Q) \ + OP(XKB_KEY_underscore, Key_F) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace apl { +namespace dyalog { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dyalog +} // namespace apl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/apl/sax/keymap.h b/src/kaleidoscope/host_keymap/linux/apl/sax/keymap.h new file mode 100644 index 0000000000..9a09ce8d06 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/apl/sax/keymap.h @@ -0,0 +1,282 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: apl +// variant: sax + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('\'', Key_K) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('*', Key_P) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_3) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_5) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', Key_7) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', Key_Q) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('_', Key_F) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', Key_M) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('~', Key_T) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'\'', Key_K) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'*', Key_P) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_3) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_5) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', Key_7) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', Key_Q) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'_', Key_F) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', Key_M) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'~', Key_T) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', LSHIFT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', LSHIFT(Key_4)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¨', Key_1) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'¯', Key_2) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'¿', LSHIFT(Key_Q)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'×', Key_Minus) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', Key_Equals) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'←', Key_LeftBracket) \ + OP(L'↑', Key_Y) \ + OP(L'→', Key_RightBracket) \ + OP(L'↓', Key_U) \ + OP(L'∆', Key_H) \ + OP(L'∇', Key_G) \ + OP(L'∊', Key_E) \ + OP(L'∘', Key_J) \ + OP(L'∧', Key_0) \ + OP(L'∨', Key_9) \ + OP(L'∩', Key_C) \ + OP(L'∪', Key_V) \ + OP(L'≠', Key_8) \ + OP(L'≡', LSHIFT(Key_Minus)) \ + OP(L'≤', Key_4) \ + OP(L'≥', Key_6) \ + OP(L'⊂', Key_Z) \ + OP(L'⊃', Key_X) \ + OP(L'⊖', LSHIFT(Key_A)) \ + OP(L'⊢', Key_Semicolon) \ + OP(L'⊣', Key_Quote) \ + OP(L'⊤', Key_N) \ + OP(L'⊥', Key_B) \ + OP(L'⋄', Key_Backtick) \ + OP(L'⌈', Key_S) \ + OP(L'⌊', Key_D) \ + OP(L'⌶', LSHIFT(Key_M)) \ + OP(L'⌹', LSHIFT(Key_Equals)) \ + OP(L'⌻', LSHIFT(Key_K)) \ + OP(L'⌽', LSHIFT(Key_W)) \ + OP(L'⌿', LSHIFT(Key_Slash)) \ + OP(L'⍀', LSHIFT(Key_NonUsPound)) \ + OP(L'⍂', LSHIFT(Key_8)) \ + OP(L'⍉', LSHIFT(Key_T)) \ + OP(L'⍋', LSHIFT(Key_H)) \ + OP(L'⍎', Key_Period) \ + OP(L'⍒', LSHIFT(Key_G)) \ + OP(L'⍕', Key_Slash) \ + OP(L'⍙', LSHIFT(Key_Period)) \ + OP(L'⍝', Key_NonUsPound) \ + OP(L'⍞', Key_Comma) \ + OP(L'⍟', LSHIFT(Key_P)) \ + OP(L'⍤', LSHIFT(Key_J)) \ + OP(L'⍥', LSHIFT(Key_O)) \ + OP(L'⍪', LSHIFT(Key_Comma)) \ + OP(L'⍫', LSHIFT(Key_F)) \ + OP(L'⍱', LSHIFT(Key_9)) \ + OP(L'⍲', LSHIFT(Key_0)) \ + OP(L'⍳', Key_I) \ + OP(L'⍴', Key_R) \ + OP(L'⍵', Key_W) \ + OP(L'⍷', LSHIFT(Key_E)) \ + OP(L'⍸', LSHIFT(Key_I)) \ + OP(L'⍺', Key_A) \ + OP(L'⎕', Key_L) \ + OP(L'○', Key_O) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_K) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, Key_T) \ + OP(XKB_KEY_asterisk, Key_P) \ + OP(XKB_KEY_bar, Key_M) \ + OP(XKB_KEY_cent, LSHIFT(Key_4)) \ + OP(XKB_KEY_diaeresis, Key_1) \ + OP(XKB_KEY_division, Key_Equals) \ + OP(XKB_KEY_equal, Key_5) \ + OP(XKB_KEY_exclamdown, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, Key_7) \ + OP(XKB_KEY_less, Key_3) \ + OP(XKB_KEY_macron, Key_2) \ + OP(XKB_KEY_multiply, Key_Minus) \ + OP(XKB_KEY_question, Key_Q) \ + OP(XKB_KEY_questiondown, LSHIFT(Key_Q)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, Key_F) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace apl { +namespace sax { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sax +} // namespace apl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/apl/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/apl/standard/keymap.h new file mode 100644 index 0000000000..b40ab81611 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/apl/standard/keymap.h @@ -0,0 +1,293 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: apl +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_Minus)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('\'', Key_K) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('*', Key_P) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_3) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_5) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', Key_7) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', Key_Q) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('_', Key_F) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', Key_M) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('~', Key_T) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_Minus)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'\'', Key_K) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'*', Key_P) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_3) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_5) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', Key_7) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', Key_Q) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'_', Key_F) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', Key_M) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'~', Key_T) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¨', Key_1) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'¯', Key_2) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'×', Key_Minus) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', Key_Equals) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'←', Key_LeftBracket) \ + OP(L'↑', Key_Y) \ + OP(L'→', Key_RightBracket) \ + OP(L'↓', Key_U) \ + OP(L'∆', Key_H) \ + OP(L'∇', Key_G) \ + OP(L'∊', Key_E) \ + OP(L'∘', Key_J) \ + OP(L'∥', LSHIFT(Key_M)) \ + OP(L'∧', Key_0) \ + OP(L'∨', Key_9) \ + OP(L'∩', Key_C) \ + OP(L'∪', Key_V) \ + OP(L'≠', Key_8) \ + OP(L'≡', LSHIFT(Key_Semicolon)) \ + OP(L'≢', LSHIFT(Key_Quote)) /* U+2262, XKB_KEY_notidentical, NOT IDENTICAL TO */ \ + OP(L'≤', Key_4) \ + OP(L'≥', Key_6) \ + OP(L'⊂', Key_Z) \ + OP(L'⊃', Key_X) \ + OP(L'⊆', LSHIFT(Key_Z)) \ + OP(L'⊖', LSHIFT(Key_7)) \ + OP(L'⊢', Key_NonUsPound) \ + OP(L'⊣', LSHIFT(Key_NonUsPound)) \ + OP(L'⊤', Key_N) \ + OP(L'⊥', Key_B) \ + OP(L'⋄', Key_Backtick) \ + OP(L'⌈', Key_S) \ + OP(L'⌊', Key_D) \ + OP(L'⌶', LSHIFT(Key_1)) \ + OP(L'⌷', LSHIFT(Key_L)) \ + OP(L'⌸', LSHIFT(Key_K)) \ + OP(L'⌹', LSHIFT(Key_Equals)) \ + OP(L'⌺', LSHIFT(Key_Backtick)) \ + OP(L'⌽', LSHIFT(Key_5)) \ + OP(L'⌾', LSHIFT(Key_R)) \ + OP(L'⌿', Key_Slash) \ + OP(L'⍀', Key_Period) \ + OP(L'⍉', LSHIFT(Key_6)) \ + OP(L'⍋', LSHIFT(Key_4)) \ + OP(L'⍎', Key_Semicolon) \ + OP(L'⍒', LSHIFT(Key_3)) \ + OP(L'⍕', Key_Quote) \ + OP(L'⍙', LSHIFT(Key_Period)) \ + OP(L'⍝', Key_Comma) \ + OP(L'⍞', LSHIFT(Key_LeftBracket)) \ + OP(L'⍟', LSHIFT(Key_8)) \ + OP(L'⍠', LSHIFT(Key_Slash)) \ + OP(L'⍡', LSHIFT(Key_N)) \ + OP(L'⍢', LSHIFT(Key_G)) \ + OP(L'⍣', LSHIFT(Key_P)) \ + OP(L'⍤', LSHIFT(Key_J)) \ + OP(L'⍥', LSHIFT(Key_O)) \ + OP(L'⍨', LSHIFT(Key_T)) \ + OP(L'⍪', LSHIFT(Key_Comma)) \ + OP(L'⍫', LSHIFT(Key_2)) \ + OP(L'⍬', LSHIFT(Key_RightBracket)) \ + OP(L'⍭', LSHIFT(Key_B)) \ + OP(L'⍰', LSHIFT(Key_Q)) \ + OP(L'⍱', LSHIFT(Key_9)) \ + OP(L'⍲', LSHIFT(Key_0)) \ + OP(L'⍳', Key_I) \ + OP(L'⍴', Key_R) \ + OP(L'⍵', Key_W) \ + OP(L'⍷', LSHIFT(Key_E)) \ + OP(L'⍸', LSHIFT(Key_I)) \ + OP(L'⍺', Key_A) \ + OP(L'⎕', Key_L) \ + OP(L'○', Key_O) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_K) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, Key_T) \ + OP(XKB_KEY_asterisk, Key_P) \ + OP(XKB_KEY_bar, Key_M) \ + OP(XKB_KEY_diaeresis, Key_1) \ + OP(XKB_KEY_division, Key_Equals) \ + OP(XKB_KEY_equal, Key_5) \ + OP(XKB_KEY_exclam, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_greater, Key_7) \ + OP(XKB_KEY_less, Key_3) \ + OP(XKB_KEY_macron, Key_2) \ + OP(XKB_KEY_multiply, Key_Minus) \ + OP(XKB_KEY_notidentical, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_question, Key_Q) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, Key_F) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace apl { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace apl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/apl/unified/keymap.h b/src/kaleidoscope/host_keymap/linux/apl/unified/keymap.h new file mode 100644 index 0000000000..e8db7917cc --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/apl/unified/keymap.h @@ -0,0 +1,254 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: apl +// variant: unified + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('\'', Key_K) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('*', Key_P) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_3) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_5) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', Key_7) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', Key_Q) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', Key_F) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', Key_M) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('~', Key_T) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'\'', Key_K) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'*', Key_P) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_3) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_5) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', Key_7) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', Key_Q) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', Key_F) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', Key_M) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'~', Key_T) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¨', Key_1) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'¯', Key_2) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'×', Key_Minus) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', Key_Equals) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'←', Key_LeftBracket) \ + OP(L'↑', Key_Y) \ + OP(L'→', Key_RightBracket) \ + OP(L'↓', Key_U) \ + OP(L'∆', Key_H) \ + OP(L'∇', Key_G) \ + OP(L'∊', Key_E) \ + OP(L'∘', Key_J) \ + OP(L'∧', Key_0) \ + OP(L'∨', Key_9) \ + OP(L'∩', Key_C) \ + OP(L'∪', Key_V) \ + OP(L'≠', Key_8) \ + OP(L'≤', Key_4) \ + OP(L'≥', Key_6) \ + OP(L'⊂', Key_Z) \ + OP(L'⊃', Key_X) \ + OP(L'⊤', Key_N) \ + OP(L'⊥', Key_B) \ + OP(L'⋄', Key_Backtick) \ + OP(L'⌈', Key_S) \ + OP(L'⌊', Key_D) \ + OP(L'⌹', LSHIFT(Key_Equals)) \ + OP(L'⍱', LSHIFT(Key_9)) \ + OP(L'⍲', LSHIFT(Key_0)) \ + OP(L'⍳', Key_I) \ + OP(L'⍴', Key_R) \ + OP(L'⍵', Key_W) \ + OP(L'⍺', Key_A) \ + OP(L'⎕', Key_L) \ + OP(L'○', Key_O) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_K) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, Key_T) \ + OP(XKB_KEY_asterisk, Key_P) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, Key_M) \ + OP(XKB_KEY_diaeresis, Key_1) \ + OP(XKB_KEY_division, Key_Equals) \ + OP(XKB_KEY_equal, Key_5) \ + OP(XKB_KEY_greater, Key_7) \ + OP(XKB_KEY_less, Key_3) \ + OP(XKB_KEY_macron, Key_2) \ + OP(XKB_KEY_multiply, Key_Minus) \ + OP(XKB_KEY_question, Key_Q) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, Key_F) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace apl { +namespace unified { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace unified +} // namespace apl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ara/azerty/keymap.h b/src/kaleidoscope/host_keymap/linux/ara/azerty/keymap.h new file mode 100644 index 0000000000..9d680b9842 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ara/azerty/keymap.h @@ -0,0 +1,443 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ara +// variant: azerty + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', LSHIFT(Key_O)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'÷', LSHIFT(Key_I)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'؉', RALT(LSHIFT(Key_Backtick))) \ + OP(L'،', LSHIFT(Key_K)) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', LSHIFT(Key_P)) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؜', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', Key_X) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'آ', LSHIFT(Key_N)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_H)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', Key_C) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_Y)) /* U+0625, XKB_KEY_Arabic_hamzaunderalef, ARABIC LETTER ALEF WITH HAMZA BELOW */ \ + OP(L'ئ', Key_Z) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', Key_H) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_F) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', Key_M) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_J) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', Key_E) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_LeftBracket) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', Key_P) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_O) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_RightBracket) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', Key_Backtick) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_V) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_Period) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', Key_A) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', Key_W) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', Key_Q) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', Key_Quote) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', Key_Slash) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', Key_U) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', Key_Y) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_J)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'ف', Key_T) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_R) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', Key_Semicolon) /* U+0643, XKB_KEY_Arabic_kaf, ARABIC LETTER KAF */ \ + OP(L'ل', Key_G) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_L) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_K) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_I) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_Comma) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', Key_N) /* U+0649, XKB_KEY_Arabic_alefmaksura, ARABIC LETTER ALEF MAKSURA */ \ + OP(L'ي', Key_D) /* U+064a, XKB_KEY_Arabic_yeh, ARABIC LETTER YEH */ \ + OP(L'ً', LSHIFT(Key_W)) /* U+064b, XKB_KEY_Arabic_fathatan, ARABIC FATHATAN */ \ + OP(L'ٌ', LSHIFT(Key_R)) /* U+064c, XKB_KEY_Arabic_dammatan, ARABIC DAMMATAN */ \ + OP(L'ٍ', LSHIFT(Key_S)) /* U+064d, XKB_KEY_Arabic_kasratan, ARABIC KASRATAN */ \ + OP(L'َ', LSHIFT(Key_Q)) /* U+064e, XKB_KEY_Arabic_fatha, ARABIC FATHA */ \ + OP(L'ُ', LSHIFT(Key_E)) /* U+064f, XKB_KEY_Arabic_damma, ARABIC DAMMA */ \ + OP(L'ِ', LSHIFT(Key_A)) /* U+0650, XKB_KEY_Arabic_kasra, ARABIC KASRA */ \ + OP(L'ّ', LSHIFT(Key_Backtick)) /* U+0651, XKB_KEY_Arabic_shadda, ARABIC SHADDA */ \ + OP(L'ْ', LSHIFT(Key_X)) /* U+0652, XKB_KEY_Arabic_sukun, ARABIC SUKUN */ \ + OP(L'٠', RALT(Key_0)) /* U+0660, XKB_KEY_Arabic_0, ARABIC-INDIC DIGIT ZERO */ \ + OP(L'١', RALT(Key_1)) /* U+0661, XKB_KEY_Arabic_1, ARABIC-INDIC DIGIT ONE */ \ + OP(L'٢', RALT(Key_2)) /* U+0662, XKB_KEY_Arabic_2, ARABIC-INDIC DIGIT TWO */ \ + OP(L'٣', RALT(Key_3)) /* U+0663, XKB_KEY_Arabic_3, ARABIC-INDIC DIGIT THREE */ \ + OP(L'٤', RALT(Key_4)) /* U+0664, XKB_KEY_Arabic_4, ARABIC-INDIC DIGIT FOUR */ \ + OP(L'٥', RALT(Key_5)) /* U+0665, XKB_KEY_Arabic_5, ARABIC-INDIC DIGIT FIVE */ \ + OP(L'٦', RALT(Key_6)) /* U+0666, XKB_KEY_Arabic_6, ARABIC-INDIC DIGIT SIX */ \ + OP(L'٧', RALT(Key_7)) /* U+0667, XKB_KEY_Arabic_7, ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'٨', RALT(Key_8)) /* U+0668, XKB_KEY_Arabic_8, ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'٩', RALT(Key_9)) /* U+0669, XKB_KEY_Arabic_9, ARABIC-INDIC DIGIT NINE */ \ + OP(L'٪', RALT(Key_Backtick)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', RALT(Key_K)) \ + OP(L'٬', RALT(Key_Comma)) \ + OP(L'٭', RALT(Key_Slash)) \ + OP(L'ٰ', RALT(Key_N)) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٱ', RALT(Key_H)) \ + OP(L'پ', RALT(Key_F)) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', RALT(Key_LeftBracket)) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ژ', RALT(Key_Period)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ڤ', RALT(Key_T)) /* U+06a4, XKB_KEY_Arabic_veh, ARABIC LETTER VEH */ \ + OP(L'گ', RALT(Key_Semicolon)) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'‌', RALT(LSHIFT(Key_Slash))) \ + OP(L'‍', RALT(LSHIFT(Key_Quote))) \ + OP(L'‎', RALT(LSHIFT(Key_P))) \ + OP(L'‏', RALT(LSHIFT(Key_LeftBracket))) \ + OP(L'‑', RALT(LSHIFT(Key_Minus))) \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'…', LSHIFT(Key_NonUsPound)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‪', RALT(LSHIFT(Key_Y))) \ + OP(L'‫', RALT(LSHIFT(Key_U))) \ + OP(L'‬', RALT(LSHIFT(Key_I))) \ + OP(L' ', RALT(LSHIFT(Key_NonUsPound))) \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'⁦', RALT(LSHIFT(Key_Q))) \ + OP(L'⁧', RALT(LSHIFT(Key_W))) \ + OP(L'⁨', RALT(LSHIFT(Key_E))) \ + OP(L'⁩', RALT(LSHIFT(Key_R))) \ + OP(L'≈', RALT(LSHIFT(Key_Equals))) /* U+2248, XKB_KEY_approxeq, ALMOST EQUAL TO */ \ + OP(L'≠', RALT(Key_Equals)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'⟨', RALT(Key_NonUsPound)) \ + OP(L'⟩', RALT(Key_Quote)) \ + OP(L'ﻵ', LSHIFT(Key_B)) \ + OP(L'ﻷ', LSHIFT(Key_G)) \ + OP(L'ﻹ', LSHIFT(Key_T)) \ + OP(L'ﻻ', Key_B) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_0, RALT(Key_0)) \ + OP(XKB_KEY_Arabic_1, RALT(Key_1)) \ + OP(XKB_KEY_Arabic_2, RALT(Key_2)) \ + OP(XKB_KEY_Arabic_3, RALT(Key_3)) \ + OP(XKB_KEY_Arabic_4, RALT(Key_4)) \ + OP(XKB_KEY_Arabic_5, RALT(Key_5)) \ + OP(XKB_KEY_Arabic_6, RALT(Key_6)) \ + OP(XKB_KEY_Arabic_7, RALT(Key_7)) \ + OP(XKB_KEY_Arabic_8, RALT(Key_8)) \ + OP(XKB_KEY_Arabic_9, RALT(Key_9)) \ + OP(XKB_KEY_Arabic_ain, Key_U) \ + OP(XKB_KEY_Arabic_alef, Key_H) \ + OP(XKB_KEY_Arabic_alefmaksura, Key_N) \ + OP(XKB_KEY_Arabic_beh, Key_F) \ + OP(XKB_KEY_Arabic_comma, LSHIFT(Key_K)) \ + OP(XKB_KEY_Arabic_dad, Key_Q) \ + OP(XKB_KEY_Arabic_dal, Key_RightBracket) \ + OP(XKB_KEY_Arabic_damma, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_dammatan, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_fatha, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Arabic_fathatan, LSHIFT(Key_W)) \ + OP(XKB_KEY_Arabic_feh, Key_T) \ + OP(XKB_KEY_Arabic_gaf, RALT(Key_Semicolon)) \ + OP(XKB_KEY_Arabic_ghain, Key_Y) \ + OP(XKB_KEY_Arabic_ha, Key_I) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, Key_P) \ + OP(XKB_KEY_Arabic_hamza, Key_X) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, Key_C) \ + OP(XKB_KEY_Arabic_hamzaonyeh, Key_Z) \ + OP(XKB_KEY_Arabic_hamzaunderalef, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Arabic_jeem, Key_LeftBracket) \ + OP(XKB_KEY_Arabic_jeh, RALT(Key_Period)) \ + OP(XKB_KEY_Arabic_kaf, Key_Semicolon) \ + OP(XKB_KEY_Arabic_kasra, LSHIFT(Key_A)) \ + OP(XKB_KEY_Arabic_kasratan, LSHIFT(Key_S)) \ + OP(XKB_KEY_Arabic_khah, Key_O) \ + OP(XKB_KEY_Arabic_lam, Key_G) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_meem, Key_L) \ + OP(XKB_KEY_Arabic_noon, Key_K) \ + OP(XKB_KEY_Arabic_peh, RALT(Key_F)) \ + OP(XKB_KEY_Arabic_percent, RALT(Key_Backtick)) \ + OP(XKB_KEY_Arabic_qaf, Key_R) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_V) \ + OP(XKB_KEY_Arabic_sad, Key_W) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, LSHIFT(Key_P)) \ + OP(XKB_KEY_Arabic_shadda, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Arabic_sheen, Key_A) \ + OP(XKB_KEY_Arabic_sukun, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_superscript_alef, RALT(Key_N)) \ + OP(XKB_KEY_Arabic_tah, Key_Quote) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_J)) \ + OP(XKB_KEY_Arabic_tcheh, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_Arabic_teh, Key_J) \ + OP(XKB_KEY_Arabic_tehmarbuta, Key_M) \ + OP(XKB_KEY_Arabic_thal, Key_Backtick) \ + OP(XKB_KEY_Arabic_theh, Key_E) \ + OP(XKB_KEY_Arabic_veh, RALT(Key_T)) \ + OP(XKB_KEY_Arabic_waw, Key_Comma) \ + OP(XKB_KEY_Arabic_yeh, Key_D) \ + OP(XKB_KEY_Arabic_zah, Key_Slash) \ + OP(XKB_KEY_Arabic_zain, Key_Period) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_approxeq, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Z)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_V)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_C)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_F)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_D)) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, LSHIFT(Key_I)) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_ellipsis, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_grave, LSHIFT(Key_U)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_less, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_multiply, LSHIFT(Key_O)) \ + OP(XKB_KEY_notequal, RALT(Key_Equals)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_period, LSHIFT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_slash, LSHIFT(Key_L)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, Key_8) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ara { +namespace azerty { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace azerty +} // namespace ara +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ara/azerty_digits/keymap.h b/src/kaleidoscope/host_keymap/linux/ara/azerty_digits/keymap.h new file mode 100644 index 0000000000..a9c355b276 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ara/azerty_digits/keymap.h @@ -0,0 +1,443 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ara +// variant: azerty_digits + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', LSHIFT(Key_O)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'÷', LSHIFT(Key_I)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'؉', RALT(LSHIFT(Key_Backtick))) \ + OP(L'،', LSHIFT(Key_K)) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', LSHIFT(Key_P)) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؜', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', Key_X) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'آ', LSHIFT(Key_N)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_H)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', Key_C) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_Y)) /* U+0625, XKB_KEY_Arabic_hamzaunderalef, ARABIC LETTER ALEF WITH HAMZA BELOW */ \ + OP(L'ئ', Key_Z) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', Key_H) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_F) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', Key_M) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_J) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', Key_E) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_LeftBracket) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', Key_P) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_O) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_RightBracket) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', Key_Backtick) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_V) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_Period) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', Key_A) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', Key_W) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', Key_Q) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', Key_Quote) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', Key_Slash) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', Key_U) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', Key_Y) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_J)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'ف', Key_T) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_R) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', Key_Semicolon) /* U+0643, XKB_KEY_Arabic_kaf, ARABIC LETTER KAF */ \ + OP(L'ل', Key_G) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_L) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_K) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_I) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_Comma) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', Key_N) /* U+0649, XKB_KEY_Arabic_alefmaksura, ARABIC LETTER ALEF MAKSURA */ \ + OP(L'ي', Key_D) /* U+064a, XKB_KEY_Arabic_yeh, ARABIC LETTER YEH */ \ + OP(L'ً', LSHIFT(Key_W)) /* U+064b, XKB_KEY_Arabic_fathatan, ARABIC FATHATAN */ \ + OP(L'ٌ', LSHIFT(Key_R)) /* U+064c, XKB_KEY_Arabic_dammatan, ARABIC DAMMATAN */ \ + OP(L'ٍ', LSHIFT(Key_S)) /* U+064d, XKB_KEY_Arabic_kasratan, ARABIC KASRATAN */ \ + OP(L'َ', LSHIFT(Key_Q)) /* U+064e, XKB_KEY_Arabic_fatha, ARABIC FATHA */ \ + OP(L'ُ', LSHIFT(Key_E)) /* U+064f, XKB_KEY_Arabic_damma, ARABIC DAMMA */ \ + OP(L'ِ', LSHIFT(Key_A)) /* U+0650, XKB_KEY_Arabic_kasra, ARABIC KASRA */ \ + OP(L'ّ', LSHIFT(Key_Backtick)) /* U+0651, XKB_KEY_Arabic_shadda, ARABIC SHADDA */ \ + OP(L'ْ', LSHIFT(Key_X)) /* U+0652, XKB_KEY_Arabic_sukun, ARABIC SUKUN */ \ + OP(L'٠', LSHIFT(Key_0)) /* U+0660, XKB_KEY_Arabic_0, ARABIC-INDIC DIGIT ZERO */ \ + OP(L'١', LSHIFT(Key_1)) /* U+0661, XKB_KEY_Arabic_1, ARABIC-INDIC DIGIT ONE */ \ + OP(L'٢', LSHIFT(Key_2)) /* U+0662, XKB_KEY_Arabic_2, ARABIC-INDIC DIGIT TWO */ \ + OP(L'٣', LSHIFT(Key_3)) /* U+0663, XKB_KEY_Arabic_3, ARABIC-INDIC DIGIT THREE */ \ + OP(L'٤', LSHIFT(Key_4)) /* U+0664, XKB_KEY_Arabic_4, ARABIC-INDIC DIGIT FOUR */ \ + OP(L'٥', LSHIFT(Key_5)) /* U+0665, XKB_KEY_Arabic_5, ARABIC-INDIC DIGIT FIVE */ \ + OP(L'٦', LSHIFT(Key_6)) /* U+0666, XKB_KEY_Arabic_6, ARABIC-INDIC DIGIT SIX */ \ + OP(L'٧', LSHIFT(Key_7)) /* U+0667, XKB_KEY_Arabic_7, ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'٨', LSHIFT(Key_8)) /* U+0668, XKB_KEY_Arabic_8, ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'٩', LSHIFT(Key_9)) /* U+0669, XKB_KEY_Arabic_9, ARABIC-INDIC DIGIT NINE */ \ + OP(L'٪', RALT(Key_Backtick)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', RALT(Key_K)) \ + OP(L'٬', RALT(Key_Comma)) \ + OP(L'٭', RALT(Key_Slash)) \ + OP(L'ٰ', RALT(Key_N)) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٱ', RALT(Key_H)) \ + OP(L'پ', RALT(Key_F)) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', RALT(Key_LeftBracket)) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ژ', RALT(Key_Period)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ڤ', RALT(Key_T)) /* U+06a4, XKB_KEY_Arabic_veh, ARABIC LETTER VEH */ \ + OP(L'گ', RALT(Key_Semicolon)) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'‌', RALT(LSHIFT(Key_Slash))) \ + OP(L'‍', RALT(LSHIFT(Key_Quote))) \ + OP(L'‎', RALT(LSHIFT(Key_P))) \ + OP(L'‏', RALT(LSHIFT(Key_LeftBracket))) \ + OP(L'‑', RALT(LSHIFT(Key_Minus))) \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'…', LSHIFT(Key_NonUsPound)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‪', RALT(LSHIFT(Key_Y))) \ + OP(L'‫', RALT(LSHIFT(Key_U))) \ + OP(L'‬', RALT(LSHIFT(Key_I))) \ + OP(L' ', RALT(LSHIFT(Key_NonUsPound))) \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'⁦', RALT(LSHIFT(Key_Q))) \ + OP(L'⁧', RALT(LSHIFT(Key_W))) \ + OP(L'⁨', RALT(LSHIFT(Key_E))) \ + OP(L'⁩', RALT(LSHIFT(Key_R))) \ + OP(L'≈', RALT(LSHIFT(Key_Equals))) /* U+2248, XKB_KEY_approxeq, ALMOST EQUAL TO */ \ + OP(L'≠', RALT(Key_Equals)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'⟨', RALT(Key_NonUsPound)) \ + OP(L'⟩', RALT(Key_Quote)) \ + OP(L'ﻵ', LSHIFT(Key_B)) \ + OP(L'ﻷ', LSHIFT(Key_G)) \ + OP(L'ﻹ', LSHIFT(Key_T)) \ + OP(L'ﻻ', Key_B) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_0)) \ + OP(XKB_KEY_1, RALT(Key_1)) \ + OP(XKB_KEY_2, RALT(Key_2)) \ + OP(XKB_KEY_3, RALT(Key_3)) \ + OP(XKB_KEY_4, RALT(Key_4)) \ + OP(XKB_KEY_5, RALT(Key_5)) \ + OP(XKB_KEY_6, RALT(Key_6)) \ + OP(XKB_KEY_7, RALT(Key_7)) \ + OP(XKB_KEY_8, RALT(Key_8)) \ + OP(XKB_KEY_9, RALT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_Arabic_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_Arabic_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_Arabic_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_Arabic_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_Arabic_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_Arabic_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_Arabic_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_Arabic_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_Arabic_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_Arabic_ain, Key_U) \ + OP(XKB_KEY_Arabic_alef, Key_H) \ + OP(XKB_KEY_Arabic_alefmaksura, Key_N) \ + OP(XKB_KEY_Arabic_beh, Key_F) \ + OP(XKB_KEY_Arabic_comma, LSHIFT(Key_K)) \ + OP(XKB_KEY_Arabic_dad, Key_Q) \ + OP(XKB_KEY_Arabic_dal, Key_RightBracket) \ + OP(XKB_KEY_Arabic_damma, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_dammatan, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_fatha, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Arabic_fathatan, LSHIFT(Key_W)) \ + OP(XKB_KEY_Arabic_feh, Key_T) \ + OP(XKB_KEY_Arabic_gaf, RALT(Key_Semicolon)) \ + OP(XKB_KEY_Arabic_ghain, Key_Y) \ + OP(XKB_KEY_Arabic_ha, Key_I) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, Key_P) \ + OP(XKB_KEY_Arabic_hamza, Key_X) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, Key_C) \ + OP(XKB_KEY_Arabic_hamzaonyeh, Key_Z) \ + OP(XKB_KEY_Arabic_hamzaunderalef, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Arabic_jeem, Key_LeftBracket) \ + OP(XKB_KEY_Arabic_jeh, RALT(Key_Period)) \ + OP(XKB_KEY_Arabic_kaf, Key_Semicolon) \ + OP(XKB_KEY_Arabic_kasra, LSHIFT(Key_A)) \ + OP(XKB_KEY_Arabic_kasratan, LSHIFT(Key_S)) \ + OP(XKB_KEY_Arabic_khah, Key_O) \ + OP(XKB_KEY_Arabic_lam, Key_G) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_meem, Key_L) \ + OP(XKB_KEY_Arabic_noon, Key_K) \ + OP(XKB_KEY_Arabic_peh, RALT(Key_F)) \ + OP(XKB_KEY_Arabic_percent, RALT(Key_Backtick)) \ + OP(XKB_KEY_Arabic_qaf, Key_R) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_V) \ + OP(XKB_KEY_Arabic_sad, Key_W) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, LSHIFT(Key_P)) \ + OP(XKB_KEY_Arabic_shadda, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Arabic_sheen, Key_A) \ + OP(XKB_KEY_Arabic_sukun, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_superscript_alef, RALT(Key_N)) \ + OP(XKB_KEY_Arabic_tah, Key_Quote) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_J)) \ + OP(XKB_KEY_Arabic_tcheh, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_Arabic_teh, Key_J) \ + OP(XKB_KEY_Arabic_tehmarbuta, Key_M) \ + OP(XKB_KEY_Arabic_thal, Key_Backtick) \ + OP(XKB_KEY_Arabic_theh, Key_E) \ + OP(XKB_KEY_Arabic_veh, RALT(Key_T)) \ + OP(XKB_KEY_Arabic_waw, Key_Comma) \ + OP(XKB_KEY_Arabic_yeh, Key_D) \ + OP(XKB_KEY_Arabic_zah, Key_Slash) \ + OP(XKB_KEY_Arabic_zain, Key_Period) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_approxeq, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Z)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_V)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_C)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_F)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_D)) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, LSHIFT(Key_I)) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_ellipsis, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_grave, LSHIFT(Key_U)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_less, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_multiply, LSHIFT(Key_O)) \ + OP(XKB_KEY_notequal, RALT(Key_Equals)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_period, LSHIFT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_slash, LSHIFT(Key_L)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, Key_8) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ara { +namespace azerty_digits { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace azerty_digits +} // namespace ara +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ara/basic_ext/keymap.h b/src/kaleidoscope/host_keymap/linux/ara/basic_ext/keymap.h new file mode 100644 index 0000000000..a5d2355b36 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ara/basic_ext/keymap.h @@ -0,0 +1,518 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ara +// variant: basic_ext + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_M)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_M)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', LSHIFT(Key_O)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', LSHIFT(Key_I)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'،', LSHIFT(Key_K)) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', LSHIFT(Key_P)) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؜', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ؠ', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(L'ء', Key_X) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'آ', LSHIFT(Key_N)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_H)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', Key_C) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_Y)) /* U+0625, XKB_KEY_Arabic_hamzaunderalef, ARABIC LETTER ALEF WITH HAMZA BELOW */ \ + OP(L'ئ', Key_Z) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', Key_H) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_F) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', Key_M) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_J) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', Key_E) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_LeftBracket) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', Key_P) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_O) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_RightBracket) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', Key_Backtick) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_V) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_Period) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', Key_A) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', Key_W) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', Key_Q) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', Key_Quote) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', Key_Slash) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', Key_U) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', Key_Y) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_J)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'ف', Key_T) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_R) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', Key_Semicolon) /* U+0643, XKB_KEY_Arabic_kaf, ARABIC LETTER KAF */ \ + OP(L'ل', Key_G) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_L) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_K) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_I) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_Comma) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', Key_N) /* U+0649, XKB_KEY_Arabic_alefmaksura, ARABIC LETTER ALEF MAKSURA */ \ + OP(L'ي', Key_D) /* U+064a, XKB_KEY_Arabic_yeh, ARABIC LETTER YEH */ \ + OP(L'ً', LSHIFT(Key_W)) /* U+064b, XKB_KEY_Arabic_fathatan, ARABIC FATHATAN */ \ + OP(L'ٌ', LSHIFT(Key_R)) /* U+064c, XKB_KEY_Arabic_dammatan, ARABIC DAMMATAN */ \ + OP(L'ٍ', LSHIFT(Key_S)) /* U+064d, XKB_KEY_Arabic_kasratan, ARABIC KASRATAN */ \ + OP(L'َ', LSHIFT(Key_Q)) /* U+064e, XKB_KEY_Arabic_fatha, ARABIC FATHA */ \ + OP(L'ُ', LSHIFT(Key_E)) /* U+064f, XKB_KEY_Arabic_damma, ARABIC DAMMA */ \ + OP(L'ِ', LSHIFT(Key_A)) /* U+0650, XKB_KEY_Arabic_kasra, ARABIC KASRA */ \ + OP(L'ّ', LSHIFT(Key_Backtick)) /* U+0651, XKB_KEY_Arabic_shadda, ARABIC SHADDA */ \ + OP(L'ْ', LSHIFT(Key_X)) /* U+0652, XKB_KEY_Arabic_sukun, ARABIC SUKUN */ \ + OP(L'٘', RALT(LSHIFT(Key_G))) \ + OP(L'٠', RALT(Key_0)) /* U+0660, XKB_KEY_Arabic_0, ARABIC-INDIC DIGIT ZERO */ \ + OP(L'١', RALT(Key_1)) /* U+0661, XKB_KEY_Arabic_1, ARABIC-INDIC DIGIT ONE */ \ + OP(L'٢', RALT(Key_2)) /* U+0662, XKB_KEY_Arabic_2, ARABIC-INDIC DIGIT TWO */ \ + OP(L'٣', RALT(Key_3)) /* U+0663, XKB_KEY_Arabic_3, ARABIC-INDIC DIGIT THREE */ \ + OP(L'٤', RALT(Key_4)) /* U+0664, XKB_KEY_Arabic_4, ARABIC-INDIC DIGIT FOUR */ \ + OP(L'٥', RALT(Key_5)) /* U+0665, XKB_KEY_Arabic_5, ARABIC-INDIC DIGIT FIVE */ \ + OP(L'٦', RALT(Key_6)) /* U+0666, XKB_KEY_Arabic_6, ARABIC-INDIC DIGIT SIX */ \ + OP(L'٧', RALT(Key_7)) /* U+0667, XKB_KEY_Arabic_7, ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'٨', RALT(Key_8)) /* U+0668, XKB_KEY_Arabic_8, ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'٩', RALT(Key_9)) /* U+0669, XKB_KEY_Arabic_9, ARABIC-INDIC DIGIT NINE */ \ + OP(L'٪', RALT(Key_Backtick)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', RALT(Key_K)) \ + OP(L'٬', RALT(Key_Comma)) \ + OP(L'ٰ', RALT(Key_N)) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٱ', RALT(Key_H)) \ + OP(L'ٷ', RALT(LSHIFT(Key_C))) \ + OP(L'ٹ', RALT(Key_Slash)) /* U+0679, XKB_KEY_Arabic_tteh, ARABIC LETTER TTEH */ \ + OP(L'ٺ', RALT(LSHIFT(Key_J))) \ + OP(L'ٻ', RALT(LSHIFT(Key_F))) \ + OP(L'ټ', RALT(Key_S)) \ + OP(L'ٽ', RALT(Key_J)) \ + OP(L'پ', RALT(Key_F)) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'ٿ', RALT(Key_E)) \ + OP(L'ڀ', RALT(LSHIFT(Key_S))) \ + OP(L'ځ', RALT(Key_O)) \ + OP(L'ڃ', RALT(Key_P)) \ + OP(L'ڄ', RALT(Key_RightBracket)) \ + OP(L'څ', RALT(Key_Y)) \ + OP(L'چ', RALT(Key_LeftBracket)) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ڇ', RALT(LSHIFT(Key_O))) \ + OP(L'ڈ', RALT(LSHIFT(Key_Backtick))) /* U+0688, XKB_KEY_Arabic_ddal, ARABIC LETTER DDAL */ \ + OP(L'ډ', RALT(Key_Q)) \ + OP(L'ڍ', RALT(LSHIFT(Key_T))) \ + OP(L'ڑ', LSHIFT(Key_U)) /* U+0691, XKB_KEY_Arabic_rreh, ARABIC LETTER RREH */ \ + OP(L'ړ', RALT(Key_V)) \ + OP(L'ږ', RALT(LSHIFT(Key_Period))) \ + OP(L'ژ', RALT(Key_Period)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ڙ', RALT(LSHIFT(Key_V))) \ + OP(L'ڤ', RALT(Key_T)) /* U+06a4, XKB_KEY_Arabic_veh, ARABIC LETTER VEH */ \ + OP(L'ڦ', RALT(Key_R)) \ + OP(L'ک', RALT(LSHIFT(Key_Semicolon))) /* U+06a9, XKB_KEY_Arabic_keheh, ARABIC LETTER KEHEH */ \ + OP(L'ڪ', RALT(LSHIFT(Key_M))) \ + OP(L'ګ', RALT(Key_B)) \ + OP(L'ڭ', RALT(LSHIFT(Key_B))) \ + OP(L'گ', RALT(Key_Semicolon)) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'ڱ', RALT(LSHIFT(Key_L))) \ + OP(L'ڳ', RALT(Key_L)) \ + OP(L'ں', RALT(LSHIFT(Key_H))) /* U+06ba, XKB_KEY_Arabic_noon_ghunna, ARABIC LETTER NOON GHUNNA */ \ + OP(L'ڻ', RALT(LSHIFT(Key_K))) \ + OP(L'ھ', RALT(Key_I)) /* U+06be, XKB_KEY_Arabic_heh_doachashmee, ARABIC LETTER HEH DOACHASHMEE */ \ + OP(L'ۀ', RALT(Key_NonUsBackslashAndPipe)) \ + OP(L'ہ', RALT(Key_U)) /* U+06c1, XKB_KEY_Arabic_heh_goal, ARABIC LETTER HEH GOAL */ \ + OP(L'ۆ', RALT(Key_A)) \ + OP(L'ۇ', RALT(Key_C)) \ + OP(L'ۉ', RALT(LSHIFT(Key_A))) \ + OP(L'ۋ', RALT(LSHIFT(Key_Comma))) \ + OP(L'ی', LSHIFT(Key_6)) /* U+06cc, XKB_KEY_Farsi_yeh, ARABIC LETTER FARSI YEH */ \ + OP(L'ۍ', RALT(LSHIFT(Key_D))) \ + OP(L'ې', RALT(Key_D)) \ + OP(L'ے', RALT(LSHIFT(Key_N))) /* U+06d2, XKB_KEY_Arabic_yeh_baree, ARABIC LETTER YEH BARREE */ \ + OP(L'۔', RALT(Key_M)) /* U+06d4, XKB_KEY_Arabic_fullstop, ARABIC FULL STOP */ \ + OP(L'ە', RALT(Key_W)) \ + OP(L'۰', RALT(LSHIFT(Key_0))) /* U+06f0, XKB_KEY_Farsi_0, EXTENDED ARABIC-INDIC DIGIT ZERO */ \ + OP(L'۱', RALT(LSHIFT(Key_1))) /* U+06f1, XKB_KEY_Farsi_1, EXTENDED ARABIC-INDIC DIGIT ONE */ \ + OP(L'۲', RALT(LSHIFT(Key_2))) /* U+06f2, XKB_KEY_Farsi_2, EXTENDED ARABIC-INDIC DIGIT TWO */ \ + OP(L'۳', RALT(LSHIFT(Key_3))) /* U+06f3, XKB_KEY_Farsi_3, EXTENDED ARABIC-INDIC DIGIT THREE */ \ + OP(L'۴', RALT(LSHIFT(Key_4))) /* U+06f4, XKB_KEY_Farsi_4, EXTENDED ARABIC-INDIC DIGIT FOUR */ \ + OP(L'۵', RALT(LSHIFT(Key_5))) /* U+06f5, XKB_KEY_Farsi_5, EXTENDED ARABIC-INDIC DIGIT FIVE */ \ + OP(L'۶', RALT(LSHIFT(Key_6))) /* U+06f6, XKB_KEY_Farsi_6, EXTENDED ARABIC-INDIC DIGIT SIX */ \ + OP(L'۷', RALT(LSHIFT(Key_7))) /* U+06f7, XKB_KEY_Farsi_7, EXTENDED ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'۸', RALT(LSHIFT(Key_8))) /* U+06f8, XKB_KEY_Farsi_8, EXTENDED ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'۹', RALT(LSHIFT(Key_9))) /* U+06f9, XKB_KEY_Farsi_9, EXTENDED ARABIC-INDIC DIGIT NINE */ \ + OP(L'ݪ', RALT(Key_G)) \ + OP(L'‌', RALT(LSHIFT(Key_Slash))) \ + OP(L'‍', RALT(LSHIFT(Key_Quote))) \ + OP(L'‎', RALT(LSHIFT(Key_P))) \ + OP(L'‏', RALT(LSHIFT(Key_LeftBracket))) \ + OP(L'‑', RALT(LSHIFT(Key_Minus))) \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'…', LSHIFT(Key_NonUsPound)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‪', RALT(LSHIFT(Key_Y))) \ + OP(L'‫', RALT(LSHIFT(Key_U))) \ + OP(L'‬', RALT(LSHIFT(Key_I))) \ + OP(L' ', RALT(LSHIFT(Key_NonUsPound))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'⁦', RALT(LSHIFT(Key_Q))) \ + OP(L'⁧', RALT(LSHIFT(Key_W))) \ + OP(L'⁨', RALT(LSHIFT(Key_E))) \ + OP(L'⁩', RALT(LSHIFT(Key_R))) \ + OP(L'≈', RALT(LSHIFT(Key_Equals))) /* U+2248, XKB_KEY_approxeq, ALMOST EQUAL TO */ \ + OP(L'≠', RALT(Key_Equals)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'⟨', RALT(Key_NonUsPound)) \ + OP(L'⟩', RALT(Key_Quote)) \ + OP(L'ﻵ', LSHIFT(Key_B)) \ + OP(L'ﻷ', LSHIFT(Key_G)) \ + OP(L'ﻹ', LSHIFT(Key_T)) \ + OP(L'ﻻ', Key_B) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_0, RALT(Key_0)) \ + OP(XKB_KEY_Arabic_1, RALT(Key_1)) \ + OP(XKB_KEY_Arabic_2, RALT(Key_2)) \ + OP(XKB_KEY_Arabic_3, RALT(Key_3)) \ + OP(XKB_KEY_Arabic_4, RALT(Key_4)) \ + OP(XKB_KEY_Arabic_5, RALT(Key_5)) \ + OP(XKB_KEY_Arabic_6, RALT(Key_6)) \ + OP(XKB_KEY_Arabic_7, RALT(Key_7)) \ + OP(XKB_KEY_Arabic_8, RALT(Key_8)) \ + OP(XKB_KEY_Arabic_9, RALT(Key_9)) \ + OP(XKB_KEY_Arabic_ain, Key_U) \ + OP(XKB_KEY_Arabic_alef, Key_H) \ + OP(XKB_KEY_Arabic_alefmaksura, Key_N) \ + OP(XKB_KEY_Arabic_beh, Key_F) \ + OP(XKB_KEY_Arabic_comma, LSHIFT(Key_K)) \ + OP(XKB_KEY_Arabic_dad, Key_Q) \ + OP(XKB_KEY_Arabic_dal, Key_RightBracket) \ + OP(XKB_KEY_Arabic_damma, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_dammatan, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_ddal, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_Arabic_fatha, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Arabic_fathatan, LSHIFT(Key_W)) \ + OP(XKB_KEY_Arabic_feh, Key_T) \ + OP(XKB_KEY_Arabic_fullstop, RALT(Key_M)) \ + OP(XKB_KEY_Arabic_gaf, RALT(Key_Semicolon)) \ + OP(XKB_KEY_Arabic_ghain, Key_Y) \ + OP(XKB_KEY_Arabic_ha, Key_I) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, Key_P) \ + OP(XKB_KEY_Arabic_hamza, Key_X) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, Key_C) \ + OP(XKB_KEY_Arabic_hamzaonyeh, Key_Z) \ + OP(XKB_KEY_Arabic_hamzaunderalef, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Arabic_heh_doachashmee, RALT(Key_I)) \ + OP(XKB_KEY_Arabic_heh_goal, RALT(Key_U)) \ + OP(XKB_KEY_Arabic_jeem, Key_LeftBracket) \ + OP(XKB_KEY_Arabic_jeh, RALT(Key_Period)) \ + OP(XKB_KEY_Arabic_kaf, Key_Semicolon) \ + OP(XKB_KEY_Arabic_kasra, LSHIFT(Key_A)) \ + OP(XKB_KEY_Arabic_kasratan, LSHIFT(Key_S)) \ + OP(XKB_KEY_Arabic_keheh, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Arabic_khah, Key_O) \ + OP(XKB_KEY_Arabic_lam, Key_G) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_meem, Key_L) \ + OP(XKB_KEY_Arabic_noon, Key_K) \ + OP(XKB_KEY_Arabic_noon_ghunna, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_Arabic_peh, RALT(Key_F)) \ + OP(XKB_KEY_Arabic_percent, RALT(Key_Backtick)) \ + OP(XKB_KEY_Arabic_qaf, Key_R) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_V) \ + OP(XKB_KEY_Arabic_rreh, LSHIFT(Key_U)) \ + OP(XKB_KEY_Arabic_sad, Key_W) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, LSHIFT(Key_P)) \ + OP(XKB_KEY_Arabic_shadda, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Arabic_sheen, Key_A) \ + OP(XKB_KEY_Arabic_sukun, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_superscript_alef, RALT(Key_N)) \ + OP(XKB_KEY_Arabic_tah, Key_Quote) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_J)) \ + OP(XKB_KEY_Arabic_tcheh, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_Arabic_teh, Key_J) \ + OP(XKB_KEY_Arabic_tehmarbuta, Key_M) \ + OP(XKB_KEY_Arabic_thal, Key_Backtick) \ + OP(XKB_KEY_Arabic_theh, Key_E) \ + OP(XKB_KEY_Arabic_tteh, RALT(Key_Slash)) \ + OP(XKB_KEY_Arabic_veh, RALT(Key_T)) \ + OP(XKB_KEY_Arabic_waw, Key_Comma) \ + OP(XKB_KEY_Arabic_yeh, Key_D) \ + OP(XKB_KEY_Arabic_yeh_baree, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Arabic_zah, Key_Slash) \ + OP(XKB_KEY_Arabic_zain, Key_Period) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Farsi_0, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_Farsi_1, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_Farsi_2, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Farsi_3, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_Farsi_4, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_Farsi_5, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_Farsi_6, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_Farsi_7, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_Farsi_8, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_Farsi_9, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_Farsi_yeh, LSHIFT(Key_6)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_M)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_approxeq, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Z)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_V)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_C)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_F)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_D)) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_division, LSHIFT(Key_I)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_ellipsis, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_less, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, LSHIFT(Key_O)) \ + OP(XKB_KEY_notequal, RALT(Key_Equals)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, LSHIFT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_slash, LSHIFT(Key_L)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ara { +namespace basic_ext { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace basic_ext +} // namespace ara +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ara/basic_ext_digits/keymap.h b/src/kaleidoscope/host_keymap/linux/ara/basic_ext_digits/keymap.h new file mode 100644 index 0000000000..dd8bd3cccd --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ara/basic_ext_digits/keymap.h @@ -0,0 +1,507 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ara +// variant: basic_ext_digits + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_Backtick)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_M)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_Backtick)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_M)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', LSHIFT(Key_O)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', LSHIFT(Key_I)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'،', LSHIFT(Key_K)) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', LSHIFT(Key_P)) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؜', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ؠ', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(L'ء', Key_X) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'آ', LSHIFT(Key_N)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_H)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', Key_C) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_Y)) /* U+0625, XKB_KEY_Arabic_hamzaunderalef, ARABIC LETTER ALEF WITH HAMZA BELOW */ \ + OP(L'ئ', Key_Z) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', Key_H) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_F) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', Key_M) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_J) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', Key_E) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_LeftBracket) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', Key_P) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_O) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_RightBracket) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', Key_Backtick) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_V) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_Period) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', Key_A) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', Key_W) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', Key_Q) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', Key_Quote) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', Key_Slash) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', Key_U) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', Key_Y) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_J)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'ف', Key_T) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_R) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', Key_Semicolon) /* U+0643, XKB_KEY_Arabic_kaf, ARABIC LETTER KAF */ \ + OP(L'ل', Key_G) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_L) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_K) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_I) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_Comma) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', Key_N) /* U+0649, XKB_KEY_Arabic_alefmaksura, ARABIC LETTER ALEF MAKSURA */ \ + OP(L'ي', Key_D) /* U+064a, XKB_KEY_Arabic_yeh, ARABIC LETTER YEH */ \ + OP(L'ً', LSHIFT(Key_W)) /* U+064b, XKB_KEY_Arabic_fathatan, ARABIC FATHATAN */ \ + OP(L'ٌ', LSHIFT(Key_R)) /* U+064c, XKB_KEY_Arabic_dammatan, ARABIC DAMMATAN */ \ + OP(L'ٍ', LSHIFT(Key_S)) /* U+064d, XKB_KEY_Arabic_kasratan, ARABIC KASRATAN */ \ + OP(L'َ', LSHIFT(Key_Q)) /* U+064e, XKB_KEY_Arabic_fatha, ARABIC FATHA */ \ + OP(L'ُ', LSHIFT(Key_E)) /* U+064f, XKB_KEY_Arabic_damma, ARABIC DAMMA */ \ + OP(L'ِ', LSHIFT(Key_A)) /* U+0650, XKB_KEY_Arabic_kasra, ARABIC KASRA */ \ + OP(L'ّ', LSHIFT(Key_Backtick)) /* U+0651, XKB_KEY_Arabic_shadda, ARABIC SHADDA */ \ + OP(L'ْ', LSHIFT(Key_X)) /* U+0652, XKB_KEY_Arabic_sukun, ARABIC SUKUN */ \ + OP(L'٘', RALT(LSHIFT(Key_G))) \ + OP(L'٠', Key_0) /* U+0660, XKB_KEY_Arabic_0, ARABIC-INDIC DIGIT ZERO */ \ + OP(L'١', Key_1) /* U+0661, XKB_KEY_Arabic_1, ARABIC-INDIC DIGIT ONE */ \ + OP(L'٢', Key_2) /* U+0662, XKB_KEY_Arabic_2, ARABIC-INDIC DIGIT TWO */ \ + OP(L'٣', Key_3) /* U+0663, XKB_KEY_Arabic_3, ARABIC-INDIC DIGIT THREE */ \ + OP(L'٤', Key_4) /* U+0664, XKB_KEY_Arabic_4, ARABIC-INDIC DIGIT FOUR */ \ + OP(L'٥', Key_5) /* U+0665, XKB_KEY_Arabic_5, ARABIC-INDIC DIGIT FIVE */ \ + OP(L'٦', Key_6) /* U+0666, XKB_KEY_Arabic_6, ARABIC-INDIC DIGIT SIX */ \ + OP(L'٧', Key_7) /* U+0667, XKB_KEY_Arabic_7, ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'٨', Key_8) /* U+0668, XKB_KEY_Arabic_8, ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'٩', Key_9) /* U+0669, XKB_KEY_Arabic_9, ARABIC-INDIC DIGIT NINE */ \ + OP(L'٪', LSHIFT(Key_5)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', RALT(Key_K)) \ + OP(L'٬', RALT(Key_Comma)) \ + OP(L'ٰ', RALT(Key_N)) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٱ', RALT(Key_H)) \ + OP(L'ٷ', RALT(LSHIFT(Key_C))) \ + OP(L'ٹ', RALT(Key_Slash)) /* U+0679, XKB_KEY_Arabic_tteh, ARABIC LETTER TTEH */ \ + OP(L'ٺ', RALT(LSHIFT(Key_J))) \ + OP(L'ٻ', RALT(LSHIFT(Key_F))) \ + OP(L'ټ', RALT(Key_S)) \ + OP(L'ٽ', RALT(Key_J)) \ + OP(L'پ', RALT(Key_F)) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'ٿ', RALT(Key_E)) \ + OP(L'ڀ', RALT(LSHIFT(Key_S))) \ + OP(L'ځ', RALT(Key_O)) \ + OP(L'ڃ', RALT(Key_P)) \ + OP(L'ڄ', RALT(Key_RightBracket)) \ + OP(L'څ', RALT(Key_Y)) \ + OP(L'چ', RALT(Key_LeftBracket)) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ڇ', RALT(LSHIFT(Key_O))) \ + OP(L'ڈ', RALT(LSHIFT(Key_Backtick))) /* U+0688, XKB_KEY_Arabic_ddal, ARABIC LETTER DDAL */ \ + OP(L'ډ', RALT(Key_Q)) \ + OP(L'ڍ', RALT(LSHIFT(Key_T))) \ + OP(L'ڑ', LSHIFT(Key_U)) /* U+0691, XKB_KEY_Arabic_rreh, ARABIC LETTER RREH */ \ + OP(L'ړ', RALT(Key_V)) \ + OP(L'ږ', RALT(LSHIFT(Key_Period))) \ + OP(L'ژ', RALT(Key_Period)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ڙ', RALT(LSHIFT(Key_V))) \ + OP(L'ڤ', RALT(Key_T)) /* U+06a4, XKB_KEY_Arabic_veh, ARABIC LETTER VEH */ \ + OP(L'ڦ', RALT(Key_R)) \ + OP(L'ک', RALT(LSHIFT(Key_Semicolon))) /* U+06a9, XKB_KEY_Arabic_keheh, ARABIC LETTER KEHEH */ \ + OP(L'ڪ', RALT(LSHIFT(Key_M))) \ + OP(L'ګ', RALT(Key_B)) \ + OP(L'ڭ', RALT(LSHIFT(Key_B))) \ + OP(L'گ', RALT(Key_Semicolon)) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'ڱ', RALT(LSHIFT(Key_L))) \ + OP(L'ڳ', RALT(Key_L)) \ + OP(L'ں', RALT(LSHIFT(Key_H))) /* U+06ba, XKB_KEY_Arabic_noon_ghunna, ARABIC LETTER NOON GHUNNA */ \ + OP(L'ڻ', RALT(LSHIFT(Key_K))) \ + OP(L'ھ', RALT(Key_I)) /* U+06be, XKB_KEY_Arabic_heh_doachashmee, ARABIC LETTER HEH DOACHASHMEE */ \ + OP(L'ۀ', RALT(Key_NonUsBackslashAndPipe)) \ + OP(L'ہ', RALT(Key_U)) /* U+06c1, XKB_KEY_Arabic_heh_goal, ARABIC LETTER HEH GOAL */ \ + OP(L'ۆ', RALT(Key_A)) \ + OP(L'ۇ', RALT(Key_C)) \ + OP(L'ۉ', RALT(LSHIFT(Key_A))) \ + OP(L'ۋ', RALT(LSHIFT(Key_Comma))) \ + OP(L'ی', LSHIFT(Key_6)) /* U+06cc, XKB_KEY_Farsi_yeh, ARABIC LETTER FARSI YEH */ \ + OP(L'ۍ', RALT(LSHIFT(Key_D))) \ + OP(L'ې', RALT(Key_D)) \ + OP(L'ے', RALT(LSHIFT(Key_N))) /* U+06d2, XKB_KEY_Arabic_yeh_baree, ARABIC LETTER YEH BARREE */ \ + OP(L'۔', RALT(Key_M)) /* U+06d4, XKB_KEY_Arabic_fullstop, ARABIC FULL STOP */ \ + OP(L'ە', RALT(Key_W)) \ + OP(L'۰', RALT(LSHIFT(Key_0))) /* U+06f0, XKB_KEY_Farsi_0, EXTENDED ARABIC-INDIC DIGIT ZERO */ \ + OP(L'۱', RALT(LSHIFT(Key_1))) /* U+06f1, XKB_KEY_Farsi_1, EXTENDED ARABIC-INDIC DIGIT ONE */ \ + OP(L'۲', RALT(LSHIFT(Key_2))) /* U+06f2, XKB_KEY_Farsi_2, EXTENDED ARABIC-INDIC DIGIT TWO */ \ + OP(L'۳', RALT(LSHIFT(Key_3))) /* U+06f3, XKB_KEY_Farsi_3, EXTENDED ARABIC-INDIC DIGIT THREE */ \ + OP(L'۴', RALT(LSHIFT(Key_4))) /* U+06f4, XKB_KEY_Farsi_4, EXTENDED ARABIC-INDIC DIGIT FOUR */ \ + OP(L'۵', RALT(LSHIFT(Key_5))) /* U+06f5, XKB_KEY_Farsi_5, EXTENDED ARABIC-INDIC DIGIT FIVE */ \ + OP(L'۶', RALT(LSHIFT(Key_6))) /* U+06f6, XKB_KEY_Farsi_6, EXTENDED ARABIC-INDIC DIGIT SIX */ \ + OP(L'۷', RALT(LSHIFT(Key_7))) /* U+06f7, XKB_KEY_Farsi_7, EXTENDED ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'۸', RALT(LSHIFT(Key_8))) /* U+06f8, XKB_KEY_Farsi_8, EXTENDED ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'۹', RALT(LSHIFT(Key_9))) /* U+06f9, XKB_KEY_Farsi_9, EXTENDED ARABIC-INDIC DIGIT NINE */ \ + OP(L'ݪ', RALT(Key_G)) \ + OP(L'‌', RALT(LSHIFT(Key_Slash))) \ + OP(L'‍', RALT(LSHIFT(Key_Quote))) \ + OP(L'‎', RALT(LSHIFT(Key_P))) \ + OP(L'‏', RALT(LSHIFT(Key_LeftBracket))) \ + OP(L'‑', RALT(LSHIFT(Key_Minus))) \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'…', LSHIFT(Key_NonUsPound)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‪', RALT(LSHIFT(Key_Y))) \ + OP(L'‫', RALT(LSHIFT(Key_U))) \ + OP(L'‬', RALT(LSHIFT(Key_I))) \ + OP(L' ', RALT(LSHIFT(Key_NonUsPound))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'⁦', RALT(LSHIFT(Key_Q))) \ + OP(L'⁧', RALT(LSHIFT(Key_W))) \ + OP(L'⁨', RALT(LSHIFT(Key_E))) \ + OP(L'⁩', RALT(LSHIFT(Key_R))) \ + OP(L'≈', RALT(LSHIFT(Key_Equals))) /* U+2248, XKB_KEY_approxeq, ALMOST EQUAL TO */ \ + OP(L'≠', RALT(Key_Equals)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'⟨', RALT(Key_NonUsPound)) \ + OP(L'⟩', RALT(Key_Quote)) \ + OP(L'ﻵ', LSHIFT(Key_B)) \ + OP(L'ﻷ', LSHIFT(Key_G)) \ + OP(L'ﻹ', LSHIFT(Key_T)) \ + OP(L'ﻻ', Key_B) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_0)) \ + OP(XKB_KEY_1, RALT(Key_1)) \ + OP(XKB_KEY_2, RALT(Key_2)) \ + OP(XKB_KEY_3, RALT(Key_3)) \ + OP(XKB_KEY_4, RALT(Key_4)) \ + OP(XKB_KEY_5, RALT(Key_5)) \ + OP(XKB_KEY_6, RALT(Key_6)) \ + OP(XKB_KEY_7, RALT(Key_7)) \ + OP(XKB_KEY_8, RALT(Key_8)) \ + OP(XKB_KEY_9, RALT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_0, Key_0) \ + OP(XKB_KEY_Arabic_1, Key_1) \ + OP(XKB_KEY_Arabic_2, Key_2) \ + OP(XKB_KEY_Arabic_3, Key_3) \ + OP(XKB_KEY_Arabic_4, Key_4) \ + OP(XKB_KEY_Arabic_5, Key_5) \ + OP(XKB_KEY_Arabic_6, Key_6) \ + OP(XKB_KEY_Arabic_7, Key_7) \ + OP(XKB_KEY_Arabic_8, Key_8) \ + OP(XKB_KEY_Arabic_9, Key_9) \ + OP(XKB_KEY_Arabic_ain, Key_U) \ + OP(XKB_KEY_Arabic_alef, Key_H) \ + OP(XKB_KEY_Arabic_alefmaksura, Key_N) \ + OP(XKB_KEY_Arabic_beh, Key_F) \ + OP(XKB_KEY_Arabic_comma, LSHIFT(Key_K)) \ + OP(XKB_KEY_Arabic_dad, Key_Q) \ + OP(XKB_KEY_Arabic_dal, Key_RightBracket) \ + OP(XKB_KEY_Arabic_damma, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_dammatan, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_ddal, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_Arabic_fatha, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Arabic_fathatan, LSHIFT(Key_W)) \ + OP(XKB_KEY_Arabic_feh, Key_T) \ + OP(XKB_KEY_Arabic_fullstop, RALT(Key_M)) \ + OP(XKB_KEY_Arabic_gaf, RALT(Key_Semicolon)) \ + OP(XKB_KEY_Arabic_ghain, Key_Y) \ + OP(XKB_KEY_Arabic_ha, Key_I) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, Key_P) \ + OP(XKB_KEY_Arabic_hamza, Key_X) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, Key_C) \ + OP(XKB_KEY_Arabic_hamzaonyeh, Key_Z) \ + OP(XKB_KEY_Arabic_hamzaunderalef, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Arabic_heh_doachashmee, RALT(Key_I)) \ + OP(XKB_KEY_Arabic_heh_goal, RALT(Key_U)) \ + OP(XKB_KEY_Arabic_jeem, Key_LeftBracket) \ + OP(XKB_KEY_Arabic_jeh, RALT(Key_Period)) \ + OP(XKB_KEY_Arabic_kaf, Key_Semicolon) \ + OP(XKB_KEY_Arabic_kasra, LSHIFT(Key_A)) \ + OP(XKB_KEY_Arabic_kasratan, LSHIFT(Key_S)) \ + OP(XKB_KEY_Arabic_keheh, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Arabic_khah, Key_O) \ + OP(XKB_KEY_Arabic_lam, Key_G) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_meem, Key_L) \ + OP(XKB_KEY_Arabic_noon, Key_K) \ + OP(XKB_KEY_Arabic_noon_ghunna, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_Arabic_peh, RALT(Key_F)) \ + OP(XKB_KEY_Arabic_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_Arabic_qaf, Key_R) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_V) \ + OP(XKB_KEY_Arabic_rreh, LSHIFT(Key_U)) \ + OP(XKB_KEY_Arabic_sad, Key_W) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, LSHIFT(Key_P)) \ + OP(XKB_KEY_Arabic_shadda, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Arabic_sheen, Key_A) \ + OP(XKB_KEY_Arabic_sukun, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_superscript_alef, RALT(Key_N)) \ + OP(XKB_KEY_Arabic_tah, Key_Quote) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_J)) \ + OP(XKB_KEY_Arabic_tcheh, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_Arabic_teh, Key_J) \ + OP(XKB_KEY_Arabic_tehmarbuta, Key_M) \ + OP(XKB_KEY_Arabic_thal, Key_Backtick) \ + OP(XKB_KEY_Arabic_theh, Key_E) \ + OP(XKB_KEY_Arabic_tteh, RALT(Key_Slash)) \ + OP(XKB_KEY_Arabic_veh, RALT(Key_T)) \ + OP(XKB_KEY_Arabic_waw, Key_Comma) \ + OP(XKB_KEY_Arabic_yeh, Key_D) \ + OP(XKB_KEY_Arabic_yeh_baree, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Arabic_zah, Key_Slash) \ + OP(XKB_KEY_Arabic_zain, Key_Period) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Farsi_0, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_Farsi_1, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_Farsi_2, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Farsi_3, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_Farsi_4, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_Farsi_5, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_Farsi_6, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_Farsi_7, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_Farsi_8, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_Farsi_9, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_Farsi_yeh, LSHIFT(Key_6)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_M)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_approxeq, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Z)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_V)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_C)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_F)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_D)) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_division, LSHIFT(Key_I)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_ellipsis, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_less, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, LSHIFT(Key_O)) \ + OP(XKB_KEY_notequal, RALT(Key_Equals)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, RALT(Key_Backtick)) \ + OP(XKB_KEY_period, LSHIFT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_slash, LSHIFT(Key_L)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ara { +namespace basic_ext_digits { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace basic_ext_digits +} // namespace ara +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ara/buckwalter/keymap.h b/src/kaleidoscope/host_keymap/linux/ara/buckwalter/keymap.h new file mode 100644 index 0000000000..251bb6fb10 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ara/buckwalter/keymap.h @@ -0,0 +1,323 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ara +// variant: buckwalter + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'،', Key_Comma) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', Key_Semicolon) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', Key_Quote) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'آ', LSHIFT(Key_NonUsPound)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_O)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', LSHIFT(Key_7)) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_I)) /* U+0625, XKB_KEY_Arabic_hamzaunderalef, ARABIC LETTER ALEF WITH HAMZA BELOW */ \ + OP(L'ئ', LSHIFT(Key_RightBracket)) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', LSHIFT(Key_A)) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_B) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', Key_P) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_T) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', Key_V) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_J) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', LSHIFT(Key_H)) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_X) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_D) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', LSHIFT(Key_8)) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_R) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_Z) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', LSHIFT(Key_4)) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', LSHIFT(Key_S)) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', LSHIFT(Key_D)) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', LSHIFT(Key_T)) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', LSHIFT(Key_Z)) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', LSHIFT(Key_E)) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', Key_G) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_Minus)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'ف', Key_F) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_Q) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', Key_K) /* U+0643, XKB_KEY_Arabic_kaf, ARABIC LETTER KAF */ \ + OP(L'ل', Key_L) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_M) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_N) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_H) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_W) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', LSHIFT(Key_Y)) /* U+0649, XKB_KEY_Arabic_alefmaksura, ARABIC LETTER ALEF MAKSURA */ \ + OP(L'ي', Key_Y) /* U+064a, XKB_KEY_Arabic_yeh, ARABIC LETTER YEH */ \ + OP(L'ً', LSHIFT(Key_F)) /* U+064b, XKB_KEY_Arabic_fathatan, ARABIC FATHATAN */ \ + OP(L'ٌ', LSHIFT(Key_N)) /* U+064c, XKB_KEY_Arabic_dammatan, ARABIC DAMMATAN */ \ + OP(L'ٍ', LSHIFT(Key_K)) /* U+064d, XKB_KEY_Arabic_kasratan, ARABIC KASRATAN */ \ + OP(L'َ', Key_A) /* U+064e, XKB_KEY_Arabic_fatha, ARABIC FATHA */ \ + OP(L'ُ', Key_U) /* U+064f, XKB_KEY_Arabic_damma, ARABIC DAMMA */ \ + OP(L'ِ', Key_I) /* U+0650, XKB_KEY_Arabic_kasra, ARABIC KASRA */ \ + OP(L'ّ', LSHIFT(Key_Backtick)) /* U+0651, XKB_KEY_Arabic_shadda, ARABIC SHADDA */ \ + OP(L'ْ', Key_O) /* U+0652, XKB_KEY_Arabic_sukun, ARABIC SUKUN */ \ + OP(L'٠', Key_0) /* U+0660, XKB_KEY_Arabic_0, ARABIC-INDIC DIGIT ZERO */ \ + OP(L'١', Key_1) /* U+0661, XKB_KEY_Arabic_1, ARABIC-INDIC DIGIT ONE */ \ + OP(L'٢', Key_2) /* U+0662, XKB_KEY_Arabic_2, ARABIC-INDIC DIGIT TWO */ \ + OP(L'٣', Key_3) /* U+0663, XKB_KEY_Arabic_3, ARABIC-INDIC DIGIT THREE */ \ + OP(L'٤', Key_4) /* U+0664, XKB_KEY_Arabic_4, ARABIC-INDIC DIGIT FOUR */ \ + OP(L'٥', Key_5) /* U+0665, XKB_KEY_Arabic_5, ARABIC-INDIC DIGIT FIVE */ \ + OP(L'٦', Key_6) /* U+0666, XKB_KEY_Arabic_6, ARABIC-INDIC DIGIT SIX */ \ + OP(L'٧', Key_7) /* U+0667, XKB_KEY_Arabic_7, ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'٨', Key_8) /* U+0668, XKB_KEY_Arabic_8, ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'٩', Key_9) /* U+0669, XKB_KEY_Arabic_9, ARABIC-INDIC DIGIT NINE */ \ + OP(L'٪', LSHIFT(Key_5)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'ٰ', Key_Backtick) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٱ', LSHIFT(Key_LeftBracket)) \ + OP(L'۔', Key_Period) /* U+06d4, XKB_KEY_Arabic_fullstop, ARABIC FULL STOP */ \ + OP(L'﴾', LSHIFT(Key_9)) \ + OP(L'﴿', LSHIFT(Key_0)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_Arabic_0, Key_0) \ + OP(XKB_KEY_Arabic_1, Key_1) \ + OP(XKB_KEY_Arabic_2, Key_2) \ + OP(XKB_KEY_Arabic_3, Key_3) \ + OP(XKB_KEY_Arabic_4, Key_4) \ + OP(XKB_KEY_Arabic_5, Key_5) \ + OP(XKB_KEY_Arabic_6, Key_6) \ + OP(XKB_KEY_Arabic_7, Key_7) \ + OP(XKB_KEY_Arabic_8, Key_8) \ + OP(XKB_KEY_Arabic_9, Key_9) \ + OP(XKB_KEY_Arabic_ain, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_alef, LSHIFT(Key_A)) \ + OP(XKB_KEY_Arabic_alefmaksura, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Arabic_beh, Key_B) \ + OP(XKB_KEY_Arabic_comma, Key_Comma) \ + OP(XKB_KEY_Arabic_dad, LSHIFT(Key_D)) \ + OP(XKB_KEY_Arabic_dal, Key_D) \ + OP(XKB_KEY_Arabic_damma, Key_U) \ + OP(XKB_KEY_Arabic_dammatan, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_fatha, Key_A) \ + OP(XKB_KEY_Arabic_fathatan, LSHIFT(Key_F)) \ + OP(XKB_KEY_Arabic_feh, Key_F) \ + OP(XKB_KEY_Arabic_fullstop, Key_Period) \ + OP(XKB_KEY_Arabic_ghain, Key_G) \ + OP(XKB_KEY_Arabic_ha, Key_H) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_hamza, Key_Quote) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_O)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, LSHIFT(Key_7)) \ + OP(XKB_KEY_Arabic_hamzaonyeh, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Arabic_hamzaunderalef, LSHIFT(Key_I)) \ + OP(XKB_KEY_Arabic_jeem, Key_J) \ + OP(XKB_KEY_Arabic_kaf, Key_K) \ + OP(XKB_KEY_Arabic_kasra, Key_I) \ + OP(XKB_KEY_Arabic_kasratan, LSHIFT(Key_K)) \ + OP(XKB_KEY_Arabic_khah, Key_X) \ + OP(XKB_KEY_Arabic_lam, Key_L) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Arabic_meem, Key_M) \ + OP(XKB_KEY_Arabic_noon, Key_N) \ + OP(XKB_KEY_Arabic_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_Arabic_qaf, Key_Q) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_R) \ + OP(XKB_KEY_Arabic_sad, LSHIFT(Key_S)) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, Key_Semicolon) \ + OP(XKB_KEY_Arabic_shadda, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Arabic_sheen, LSHIFT(Key_4)) \ + OP(XKB_KEY_Arabic_sukun, Key_O) \ + OP(XKB_KEY_Arabic_superscript_alef, Key_Backtick) \ + OP(XKB_KEY_Arabic_tah, LSHIFT(Key_T)) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Arabic_teh, Key_T) \ + OP(XKB_KEY_Arabic_tehmarbuta, Key_P) \ + OP(XKB_KEY_Arabic_thal, LSHIFT(Key_8)) \ + OP(XKB_KEY_Arabic_theh, Key_V) \ + OP(XKB_KEY_Arabic_waw, Key_W) \ + OP(XKB_KEY_Arabic_yeh, Key_Y) \ + OP(XKB_KEY_Arabic_zah, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Arabic_zain, Key_Z) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ara { +namespace buckwalter { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace buckwalter +} // namespace ara +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ara/digits/keymap.h b/src/kaleidoscope/host_keymap/linux/ara/digits/keymap.h new file mode 100644 index 0000000000..2e63ef2276 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ara/digits/keymap.h @@ -0,0 +1,441 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ara +// variant: digits + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_Backtick)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_M)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_Backtick)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_M)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', LSHIFT(Key_O)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', LSHIFT(Key_I)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'؉', RALT(LSHIFT(Key_5))) \ + OP(L'،', LSHIFT(Key_K)) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', LSHIFT(Key_P)) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؜', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', Key_X) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'آ', LSHIFT(Key_N)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_H)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', Key_C) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_Y)) /* U+0625, XKB_KEY_Arabic_hamzaunderalef, ARABIC LETTER ALEF WITH HAMZA BELOW */ \ + OP(L'ئ', Key_Z) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', Key_H) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_F) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', Key_M) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_J) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', Key_E) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_LeftBracket) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', Key_P) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_O) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_RightBracket) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', Key_Backtick) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_V) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_Period) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', Key_A) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', Key_W) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', Key_Q) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', Key_Quote) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', Key_Slash) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', Key_U) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', Key_Y) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_J)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'ف', Key_T) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_R) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', Key_Semicolon) /* U+0643, XKB_KEY_Arabic_kaf, ARABIC LETTER KAF */ \ + OP(L'ل', Key_G) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_L) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_K) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_I) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_Comma) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', Key_N) /* U+0649, XKB_KEY_Arabic_alefmaksura, ARABIC LETTER ALEF MAKSURA */ \ + OP(L'ي', Key_D) /* U+064a, XKB_KEY_Arabic_yeh, ARABIC LETTER YEH */ \ + OP(L'ً', LSHIFT(Key_W)) /* U+064b, XKB_KEY_Arabic_fathatan, ARABIC FATHATAN */ \ + OP(L'ٌ', LSHIFT(Key_R)) /* U+064c, XKB_KEY_Arabic_dammatan, ARABIC DAMMATAN */ \ + OP(L'ٍ', LSHIFT(Key_S)) /* U+064d, XKB_KEY_Arabic_kasratan, ARABIC KASRATAN */ \ + OP(L'َ', LSHIFT(Key_Q)) /* U+064e, XKB_KEY_Arabic_fatha, ARABIC FATHA */ \ + OP(L'ُ', LSHIFT(Key_E)) /* U+064f, XKB_KEY_Arabic_damma, ARABIC DAMMA */ \ + OP(L'ِ', LSHIFT(Key_A)) /* U+0650, XKB_KEY_Arabic_kasra, ARABIC KASRA */ \ + OP(L'ّ', LSHIFT(Key_Backtick)) /* U+0651, XKB_KEY_Arabic_shadda, ARABIC SHADDA */ \ + OP(L'ْ', LSHIFT(Key_X)) /* U+0652, XKB_KEY_Arabic_sukun, ARABIC SUKUN */ \ + OP(L'٠', Key_0) /* U+0660, XKB_KEY_Arabic_0, ARABIC-INDIC DIGIT ZERO */ \ + OP(L'١', Key_1) /* U+0661, XKB_KEY_Arabic_1, ARABIC-INDIC DIGIT ONE */ \ + OP(L'٢', Key_2) /* U+0662, XKB_KEY_Arabic_2, ARABIC-INDIC DIGIT TWO */ \ + OP(L'٣', Key_3) /* U+0663, XKB_KEY_Arabic_3, ARABIC-INDIC DIGIT THREE */ \ + OP(L'٤', Key_4) /* U+0664, XKB_KEY_Arabic_4, ARABIC-INDIC DIGIT FOUR */ \ + OP(L'٥', Key_5) /* U+0665, XKB_KEY_Arabic_5, ARABIC-INDIC DIGIT FIVE */ \ + OP(L'٦', Key_6) /* U+0666, XKB_KEY_Arabic_6, ARABIC-INDIC DIGIT SIX */ \ + OP(L'٧', Key_7) /* U+0667, XKB_KEY_Arabic_7, ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'٨', Key_8) /* U+0668, XKB_KEY_Arabic_8, ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'٩', Key_9) /* U+0669, XKB_KEY_Arabic_9, ARABIC-INDIC DIGIT NINE */ \ + OP(L'٪', LSHIFT(Key_5)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', RALT(Key_K)) \ + OP(L'٬', RALT(Key_Comma)) \ + OP(L'٭', RALT(Key_Slash)) \ + OP(L'ٰ', RALT(Key_N)) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٱ', RALT(Key_H)) \ + OP(L'پ', RALT(Key_F)) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', RALT(Key_LeftBracket)) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ژ', RALT(Key_Period)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ڤ', RALT(Key_T)) /* U+06a4, XKB_KEY_Arabic_veh, ARABIC LETTER VEH */ \ + OP(L'گ', RALT(Key_Semicolon)) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'‌', RALT(LSHIFT(Key_Slash))) \ + OP(L'‍', RALT(LSHIFT(Key_Quote))) \ + OP(L'‎', RALT(LSHIFT(Key_P))) \ + OP(L'‏', RALT(LSHIFT(Key_LeftBracket))) \ + OP(L'‑', RALT(LSHIFT(Key_Minus))) \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'…', LSHIFT(Key_NonUsPound)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‪', RALT(LSHIFT(Key_Y))) \ + OP(L'‫', RALT(LSHIFT(Key_U))) \ + OP(L'‬', RALT(LSHIFT(Key_I))) \ + OP(L' ', RALT(LSHIFT(Key_NonUsPound))) \ + OP(L'‰', RALT(LSHIFT(Key_Backtick))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'⁦', RALT(LSHIFT(Key_Q))) \ + OP(L'⁧', RALT(LSHIFT(Key_W))) \ + OP(L'⁨', RALT(LSHIFT(Key_E))) \ + OP(L'⁩', RALT(LSHIFT(Key_R))) \ + OP(L'≈', RALT(LSHIFT(Key_Equals))) /* U+2248, XKB_KEY_approxeq, ALMOST EQUAL TO */ \ + OP(L'≠', RALT(Key_Equals)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'⟨', RALT(Key_NonUsPound)) \ + OP(L'⟩', RALT(Key_Quote)) \ + OP(L'ﻵ', LSHIFT(Key_B)) \ + OP(L'ﻷ', LSHIFT(Key_G)) \ + OP(L'ﻹ', LSHIFT(Key_T)) \ + OP(L'ﻻ', Key_B) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_0)) \ + OP(XKB_KEY_1, RALT(Key_1)) \ + OP(XKB_KEY_2, RALT(Key_2)) \ + OP(XKB_KEY_3, RALT(Key_3)) \ + OP(XKB_KEY_4, RALT(Key_4)) \ + OP(XKB_KEY_5, RALT(Key_5)) \ + OP(XKB_KEY_6, RALT(Key_6)) \ + OP(XKB_KEY_7, RALT(Key_7)) \ + OP(XKB_KEY_8, RALT(Key_8)) \ + OP(XKB_KEY_9, RALT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_0, Key_0) \ + OP(XKB_KEY_Arabic_1, Key_1) \ + OP(XKB_KEY_Arabic_2, Key_2) \ + OP(XKB_KEY_Arabic_3, Key_3) \ + OP(XKB_KEY_Arabic_4, Key_4) \ + OP(XKB_KEY_Arabic_5, Key_5) \ + OP(XKB_KEY_Arabic_6, Key_6) \ + OP(XKB_KEY_Arabic_7, Key_7) \ + OP(XKB_KEY_Arabic_8, Key_8) \ + OP(XKB_KEY_Arabic_9, Key_9) \ + OP(XKB_KEY_Arabic_ain, Key_U) \ + OP(XKB_KEY_Arabic_alef, Key_H) \ + OP(XKB_KEY_Arabic_alefmaksura, Key_N) \ + OP(XKB_KEY_Arabic_beh, Key_F) \ + OP(XKB_KEY_Arabic_comma, LSHIFT(Key_K)) \ + OP(XKB_KEY_Arabic_dad, Key_Q) \ + OP(XKB_KEY_Arabic_dal, Key_RightBracket) \ + OP(XKB_KEY_Arabic_damma, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_dammatan, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_fatha, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Arabic_fathatan, LSHIFT(Key_W)) \ + OP(XKB_KEY_Arabic_feh, Key_T) \ + OP(XKB_KEY_Arabic_gaf, RALT(Key_Semicolon)) \ + OP(XKB_KEY_Arabic_ghain, Key_Y) \ + OP(XKB_KEY_Arabic_ha, Key_I) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, Key_P) \ + OP(XKB_KEY_Arabic_hamza, Key_X) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, Key_C) \ + OP(XKB_KEY_Arabic_hamzaonyeh, Key_Z) \ + OP(XKB_KEY_Arabic_hamzaunderalef, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Arabic_jeem, Key_LeftBracket) \ + OP(XKB_KEY_Arabic_jeh, RALT(Key_Period)) \ + OP(XKB_KEY_Arabic_kaf, Key_Semicolon) \ + OP(XKB_KEY_Arabic_kasra, LSHIFT(Key_A)) \ + OP(XKB_KEY_Arabic_kasratan, LSHIFT(Key_S)) \ + OP(XKB_KEY_Arabic_khah, Key_O) \ + OP(XKB_KEY_Arabic_lam, Key_G) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_meem, Key_L) \ + OP(XKB_KEY_Arabic_noon, Key_K) \ + OP(XKB_KEY_Arabic_peh, RALT(Key_F)) \ + OP(XKB_KEY_Arabic_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_Arabic_qaf, Key_R) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_V) \ + OP(XKB_KEY_Arabic_sad, Key_W) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, LSHIFT(Key_P)) \ + OP(XKB_KEY_Arabic_shadda, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Arabic_sheen, Key_A) \ + OP(XKB_KEY_Arabic_sukun, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_superscript_alef, RALT(Key_N)) \ + OP(XKB_KEY_Arabic_tah, Key_Quote) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_J)) \ + OP(XKB_KEY_Arabic_tcheh, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_Arabic_teh, Key_J) \ + OP(XKB_KEY_Arabic_tehmarbuta, Key_M) \ + OP(XKB_KEY_Arabic_thal, Key_Backtick) \ + OP(XKB_KEY_Arabic_theh, Key_E) \ + OP(XKB_KEY_Arabic_veh, RALT(Key_T)) \ + OP(XKB_KEY_Arabic_waw, Key_Comma) \ + OP(XKB_KEY_Arabic_yeh, Key_D) \ + OP(XKB_KEY_Arabic_zah, Key_Slash) \ + OP(XKB_KEY_Arabic_zain, Key_Period) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_M)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_approxeq, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Z)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_V)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_C)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_F)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_D)) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_division, LSHIFT(Key_I)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_ellipsis, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, LSHIFT(Key_U)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_less, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, LSHIFT(Key_O)) \ + OP(XKB_KEY_notequal, RALT(Key_Equals)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, RALT(Key_Backtick)) \ + OP(XKB_KEY_period, LSHIFT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_slash, LSHIFT(Key_L)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ara { +namespace digits { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace digits +} // namespace ara +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ara/mac/keymap.h b/src/kaleidoscope/host_keymap/linux/ara/mac/keymap.h new file mode 100644 index 0000000000..2646c1f92b --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ara/mac/keymap.h @@ -0,0 +1,422 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ara +// variant: mac + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_Backtick)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', RALT(Key_KeypadDot)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', LSHIFT(Key_Period)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Comma)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', LSHIFT(Key_P)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_O)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_Backtick)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', RALT(Key_KeypadDot)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', LSHIFT(Key_Period)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Comma)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', LSHIFT(Key_P)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_O)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', LSHIFT(Key_S)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', LSHIFT(Key_A)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'؉', RALT(LSHIFT(Key_5))) \ + OP(L'،', Key_Comma) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', Key_Quote) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؜', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', LSHIFT(Key_V)) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'آ', LSHIFT(Key_H)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_B)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', LSHIFT(Key_M)) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_N)) /* U+0625, XKB_KEY_Arabic_hamzaunderalef, ARABIC LETTER ALEF WITH HAMZA BELOW */ \ + OP(L'ئ', LSHIFT(Key_C)) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', Key_H) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_F) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', Key_RightBracket) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_J) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', Key_E) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_LeftBracket) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', Key_P) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_O) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_V) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', Key_C) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_N) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_B) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', Key_A) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', Key_W) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', Key_Q) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', Key_X) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', Key_Z) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', Key_U) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', Key_Y) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', Key_Backtick) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'ف', Key_T) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_R) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', Key_Semicolon) /* U+0643, XKB_KEY_Arabic_kaf, ARABIC LETTER KAF */ \ + OP(L'ل', Key_G) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_L) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_K) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_I) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_M) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', LSHIFT(Key_D)) /* U+0649, XKB_KEY_Arabic_alefmaksura, ARABIC LETTER ALEF MAKSURA */ \ + OP(L'ي', Key_D) /* U+064a, XKB_KEY_Arabic_yeh, ARABIC LETTER YEH */ \ + OP(L'ً', LSHIFT(Key_W)) /* U+064b, XKB_KEY_Arabic_fathatan, ARABIC FATHATAN */ \ + OP(L'ٌ', LSHIFT(Key_Y)) /* U+064c, XKB_KEY_Arabic_dammatan, ARABIC DAMMATAN */ \ + OP(L'ٍ', LSHIFT(Key_R)) /* U+064d, XKB_KEY_Arabic_kasratan, ARABIC KASRATAN */ \ + OP(L'َ', LSHIFT(Key_Q)) /* U+064e, XKB_KEY_Arabic_fatha, ARABIC FATHA */ \ + OP(L'ُ', LSHIFT(Key_T)) /* U+064f, XKB_KEY_Arabic_damma, ARABIC DAMMA */ \ + OP(L'ِ', LSHIFT(Key_E)) /* U+0650, XKB_KEY_Arabic_kasra, ARABIC KASRA */ \ + OP(L'ّ', LSHIFT(Key_I)) /* U+0651, XKB_KEY_Arabic_shadda, ARABIC SHADDA */ \ + OP(L'ْ', LSHIFT(Key_U)) /* U+0652, XKB_KEY_Arabic_sukun, ARABIC SUKUN */ \ + OP(L'٠', Key_0) /* U+0660, XKB_KEY_Arabic_0, ARABIC-INDIC DIGIT ZERO */ \ + OP(L'١', Key_1) /* U+0661, XKB_KEY_Arabic_1, ARABIC-INDIC DIGIT ONE */ \ + OP(L'٢', Key_2) /* U+0662, XKB_KEY_Arabic_2, ARABIC-INDIC DIGIT TWO */ \ + OP(L'٣', Key_3) /* U+0663, XKB_KEY_Arabic_3, ARABIC-INDIC DIGIT THREE */ \ + OP(L'٤', Key_4) /* U+0664, XKB_KEY_Arabic_4, ARABIC-INDIC DIGIT FOUR */ \ + OP(L'٥', Key_5) /* U+0665, XKB_KEY_Arabic_5, ARABIC-INDIC DIGIT FIVE */ \ + OP(L'٦', Key_6) /* U+0666, XKB_KEY_Arabic_6, ARABIC-INDIC DIGIT SIX */ \ + OP(L'٧', Key_7) /* U+0667, XKB_KEY_Arabic_7, ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'٨', Key_8) /* U+0668, XKB_KEY_Arabic_8, ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'٩', Key_9) /* U+0669, XKB_KEY_Arabic_9, ARABIC-INDIC DIGIT NINE */ \ + OP(L'٪', LSHIFT(Key_5)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', RALT(Key_K)) \ + OP(L'٬', RALT(Key_Comma)) \ + OP(L'٭', RALT(Key_Slash)) \ + OP(L'ٰ', LSHIFT(Key_F)) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٱ', RALT(Key_H)) \ + OP(L'پ', RALT(Key_F)) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', RALT(Key_LeftBracket)) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ژ', RALT(Key_Period)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ڤ', RALT(Key_T)) /* U+06a4, XKB_KEY_Arabic_veh, ARABIC LETTER VEH */ \ + OP(L'گ', RALT(Key_Semicolon)) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'‌', RALT(LSHIFT(Key_Slash))) \ + OP(L'‍', RALT(LSHIFT(Key_Quote))) \ + OP(L'‎', RALT(LSHIFT(Key_P))) \ + OP(L'‏', RALT(LSHIFT(Key_LeftBracket))) \ + OP(L'‑', RALT(LSHIFT(Key_Minus))) \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‪', RALT(LSHIFT(Key_Y))) \ + OP(L'‫', RALT(LSHIFT(Key_U))) \ + OP(L'‬', RALT(LSHIFT(Key_I))) \ + OP(L' ', RALT(LSHIFT(Key_NonUsPound))) \ + OP(L'‰', RALT(LSHIFT(Key_Backtick))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'⁦', RALT(LSHIFT(Key_Q))) \ + OP(L'⁧', RALT(LSHIFT(Key_W))) \ + OP(L'⁨', RALT(LSHIFT(Key_E))) \ + OP(L'⁩', RALT(LSHIFT(Key_R))) \ + OP(L'≈', RALT(LSHIFT(Key_Equals))) /* U+2248, XKB_KEY_approxeq, ALMOST EQUAL TO */ \ + OP(L'≠', RALT(Key_Equals)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'⟨', RALT(Key_NonUsPound)) \ + OP(L'⟩', RALT(Key_Quote)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_0)) \ + OP(XKB_KEY_1, RALT(Key_1)) \ + OP(XKB_KEY_2, RALT(Key_2)) \ + OP(XKB_KEY_3, RALT(Key_3)) \ + OP(XKB_KEY_4, RALT(Key_4)) \ + OP(XKB_KEY_5, RALT(Key_5)) \ + OP(XKB_KEY_6, RALT(Key_6)) \ + OP(XKB_KEY_7, RALT(Key_7)) \ + OP(XKB_KEY_8, RALT(Key_8)) \ + OP(XKB_KEY_9, RALT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_0, Key_0) \ + OP(XKB_KEY_Arabic_1, Key_1) \ + OP(XKB_KEY_Arabic_2, Key_2) \ + OP(XKB_KEY_Arabic_3, Key_3) \ + OP(XKB_KEY_Arabic_4, Key_4) \ + OP(XKB_KEY_Arabic_5, Key_5) \ + OP(XKB_KEY_Arabic_6, Key_6) \ + OP(XKB_KEY_Arabic_7, Key_7) \ + OP(XKB_KEY_Arabic_8, Key_8) \ + OP(XKB_KEY_Arabic_9, Key_9) \ + OP(XKB_KEY_Arabic_ain, Key_U) \ + OP(XKB_KEY_Arabic_alef, Key_H) \ + OP(XKB_KEY_Arabic_alefmaksura, LSHIFT(Key_D)) \ + OP(XKB_KEY_Arabic_beh, Key_F) \ + OP(XKB_KEY_Arabic_comma, Key_Comma) \ + OP(XKB_KEY_Arabic_dad, Key_Q) \ + OP(XKB_KEY_Arabic_dal, Key_V) \ + OP(XKB_KEY_Arabic_damma, LSHIFT(Key_T)) \ + OP(XKB_KEY_Arabic_dammatan, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Arabic_fatha, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Arabic_fathatan, LSHIFT(Key_W)) \ + OP(XKB_KEY_Arabic_feh, Key_T) \ + OP(XKB_KEY_Arabic_gaf, RALT(Key_Semicolon)) \ + OP(XKB_KEY_Arabic_ghain, Key_Y) \ + OP(XKB_KEY_Arabic_ha, Key_I) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, Key_P) \ + OP(XKB_KEY_Arabic_hamza, LSHIFT(Key_V)) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_B)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, LSHIFT(Key_M)) \ + OP(XKB_KEY_Arabic_hamzaonyeh, LSHIFT(Key_C)) \ + OP(XKB_KEY_Arabic_hamzaunderalef, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_jeem, Key_LeftBracket) \ + OP(XKB_KEY_Arabic_jeh, RALT(Key_Period)) \ + OP(XKB_KEY_Arabic_kaf, Key_Semicolon) \ + OP(XKB_KEY_Arabic_kasra, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_kasratan, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_khah, Key_O) \ + OP(XKB_KEY_Arabic_lam, Key_G) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_meem, Key_L) \ + OP(XKB_KEY_Arabic_noon, Key_K) \ + OP(XKB_KEY_Arabic_peh, RALT(Key_F)) \ + OP(XKB_KEY_Arabic_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_Arabic_qaf, Key_R) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_N) \ + OP(XKB_KEY_Arabic_sad, Key_W) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, Key_Quote) \ + OP(XKB_KEY_Arabic_shadda, LSHIFT(Key_I)) \ + OP(XKB_KEY_Arabic_sheen, Key_A) \ + OP(XKB_KEY_Arabic_sukun, LSHIFT(Key_U)) \ + OP(XKB_KEY_Arabic_superscript_alef, LSHIFT(Key_F)) \ + OP(XKB_KEY_Arabic_tah, Key_X) \ + OP(XKB_KEY_Arabic_tatweel, Key_Backtick) \ + OP(XKB_KEY_Arabic_tcheh, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_Arabic_teh, Key_J) \ + OP(XKB_KEY_Arabic_tehmarbuta, Key_RightBracket) \ + OP(XKB_KEY_Arabic_thal, Key_C) \ + OP(XKB_KEY_Arabic_theh, Key_E) \ + OP(XKB_KEY_Arabic_veh, RALT(Key_T)) \ + OP(XKB_KEY_Arabic_waw, Key_M) \ + OP(XKB_KEY_Arabic_yeh, Key_D) \ + OP(XKB_KEY_Arabic_zah, Key_Z) \ + OP(XKB_KEY_Arabic_zain, Key_B) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_approxeq, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_P)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_O)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, RALT(Key_KeypadDot)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_guillemotleft, LSHIFT(Key_S)) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_A)) \ + OP(XKB_KEY_less, LSHIFT(Key_Period)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_notequal, RALT(Key_Equals)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, RALT(Key_Backtick)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ara { +namespace mac { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mac +} // namespace ara +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ara/olpc/keymap.h b/src/kaleidoscope/host_keymap/linux/ara/olpc/keymap.h new file mode 100644 index 0000000000..4e03398665 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ara/olpc/keymap.h @@ -0,0 +1,450 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ara +// variant: olpc + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_Backtick)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_G)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_M)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', LSHIFT(Key_S)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_A)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_B)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_Backtick)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_G)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_M)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', LSHIFT(Key_S)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_A)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_B)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', LSHIFT(Key_6)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', LSHIFT(Key_O)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', LSHIFT(Key_I)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'؉', RALT(LSHIFT(Key_5))) \ + OP(L'،', LSHIFT(Key_K)) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', LSHIFT(Key_P)) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؜', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', Key_X) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'آ', LSHIFT(Key_N)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_H)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', Key_C) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_Y)) /* U+0625, XKB_KEY_Arabic_hamzaunderalef, ARABIC LETTER ALEF WITH HAMZA BELOW */ \ + OP(L'ئ', Key_Z) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', Key_H) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_F) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', Key_M) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_J) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', Key_E) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_LeftBracket) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', Key_P) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_O) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_RightBracket) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', Key_B) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_V) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_Period) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', Key_A) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', Key_W) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', Key_Q) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', Key_Quote) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', Key_Slash) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', Key_U) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', Key_Y) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_J)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'ف', Key_T) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_R) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', Key_Semicolon) /* U+0643, XKB_KEY_Arabic_kaf, ARABIC LETTER KAF */ \ + OP(L'ل', Key_G) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_L) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_K) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_I) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_Comma) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', Key_N) /* U+0649, XKB_KEY_Arabic_alefmaksura, ARABIC LETTER ALEF MAKSURA */ \ + OP(L'ي', Key_D) /* U+064a, XKB_KEY_Arabic_yeh, ARABIC LETTER YEH */ \ + OP(L'ً', LSHIFT(Key_W)) /* U+064b, XKB_KEY_Arabic_fathatan, ARABIC FATHATAN */ \ + OP(L'ٌ', LSHIFT(Key_R)) /* U+064c, XKB_KEY_Arabic_dammatan, ARABIC DAMMATAN */ \ + OP(L'ٍ', LSHIFT(Key_V)) /* U+064d, XKB_KEY_Arabic_kasratan, ARABIC KASRATAN */ \ + OP(L'َ', LSHIFT(Key_Q)) /* U+064e, XKB_KEY_Arabic_fatha, ARABIC FATHA */ \ + OP(L'ُ', LSHIFT(Key_E)) /* U+064f, XKB_KEY_Arabic_damma, ARABIC DAMMA */ \ + OP(L'ِ', LSHIFT(Key_C)) /* U+0650, XKB_KEY_Arabic_kasra, ARABIC KASRA */ \ + OP(L'ّ', LSHIFT(Key_T)) /* U+0651, XKB_KEY_Arabic_shadda, ARABIC SHADDA */ \ + OP(L'ْ', LSHIFT(Key_X)) /* U+0652, XKB_KEY_Arabic_sukun, ARABIC SUKUN */ \ + OP(L'٠', Key_0) /* U+0660, XKB_KEY_Arabic_0, ARABIC-INDIC DIGIT ZERO */ \ + OP(L'١', Key_1) /* U+0661, XKB_KEY_Arabic_1, ARABIC-INDIC DIGIT ONE */ \ + OP(L'٢', Key_2) /* U+0662, XKB_KEY_Arabic_2, ARABIC-INDIC DIGIT TWO */ \ + OP(L'٣', Key_3) /* U+0663, XKB_KEY_Arabic_3, ARABIC-INDIC DIGIT THREE */ \ + OP(L'٤', Key_4) /* U+0664, XKB_KEY_Arabic_4, ARABIC-INDIC DIGIT FOUR */ \ + OP(L'٥', Key_5) /* U+0665, XKB_KEY_Arabic_5, ARABIC-INDIC DIGIT FIVE */ \ + OP(L'٦', Key_6) /* U+0666, XKB_KEY_Arabic_6, ARABIC-INDIC DIGIT SIX */ \ + OP(L'٧', Key_7) /* U+0667, XKB_KEY_Arabic_7, ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'٨', Key_8) /* U+0668, XKB_KEY_Arabic_8, ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'٩', Key_9) /* U+0669, XKB_KEY_Arabic_9, ARABIC-INDIC DIGIT NINE */ \ + OP(L'٪', LSHIFT(Key_5)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', RALT(Key_K)) \ + OP(L'٬', RALT(Key_Comma)) \ + OP(L'٭', RALT(Key_Slash)) \ + OP(L'ٰ', RALT(Key_N)) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٱ', RALT(Key_H)) \ + OP(L'پ', RALT(Key_F)) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', RALT(Key_LeftBracket)) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ژ', RALT(Key_Period)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ڤ', RALT(Key_T)) /* U+06a4, XKB_KEY_Arabic_veh, ARABIC LETTER VEH */ \ + OP(L'گ', RALT(Key_Semicolon)) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'‌', RALT(LSHIFT(Key_Slash))) \ + OP(L'‍', RALT(LSHIFT(Key_Quote))) \ + OP(L'‎', RALT(LSHIFT(Key_P))) \ + OP(L'‏', RALT(LSHIFT(Key_LeftBracket))) \ + OP(L'‑', RALT(LSHIFT(Key_Minus))) \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‪', RALT(LSHIFT(Key_Y))) \ + OP(L'‫', RALT(LSHIFT(Key_U))) \ + OP(L'‬', RALT(LSHIFT(Key_I))) \ + OP(L' ', RALT(LSHIFT(Key_NonUsPound))) \ + OP(L'‰', RALT(LSHIFT(Key_Backtick))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'⁦', RALT(LSHIFT(Key_Q))) \ + OP(L'⁧', RALT(LSHIFT(Key_W))) \ + OP(L'⁨', RALT(LSHIFT(Key_E))) \ + OP(L'⁩', RALT(LSHIFT(Key_R))) \ + OP(L'€', LSHIFT(Key_7)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'≈', RALT(LSHIFT(Key_Equals))) /* U+2248, XKB_KEY_approxeq, ALMOST EQUAL TO */ \ + OP(L'≠', RALT(Key_Equals)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'⟨', RALT(Key_NonUsPound)) \ + OP(L'⟩', RALT(Key_Quote)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_0)) \ + OP(XKB_KEY_1, RALT(Key_1)) \ + OP(XKB_KEY_2, RALT(Key_2)) \ + OP(XKB_KEY_3, RALT(Key_3)) \ + OP(XKB_KEY_4, RALT(Key_4)) \ + OP(XKB_KEY_5, RALT(Key_5)) \ + OP(XKB_KEY_6, RALT(Key_6)) \ + OP(XKB_KEY_7, RALT(Key_7)) \ + OP(XKB_KEY_8, RALT(Key_8)) \ + OP(XKB_KEY_9, RALT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_0, Key_0) \ + OP(XKB_KEY_Arabic_1, Key_1) \ + OP(XKB_KEY_Arabic_2, Key_2) \ + OP(XKB_KEY_Arabic_3, Key_3) \ + OP(XKB_KEY_Arabic_4, Key_4) \ + OP(XKB_KEY_Arabic_5, Key_5) \ + OP(XKB_KEY_Arabic_6, Key_6) \ + OP(XKB_KEY_Arabic_7, Key_7) \ + OP(XKB_KEY_Arabic_8, Key_8) \ + OP(XKB_KEY_Arabic_9, Key_9) \ + OP(XKB_KEY_Arabic_ain, Key_U) \ + OP(XKB_KEY_Arabic_alef, Key_H) \ + OP(XKB_KEY_Arabic_alefmaksura, Key_N) \ + OP(XKB_KEY_Arabic_beh, Key_F) \ + OP(XKB_KEY_Arabic_comma, LSHIFT(Key_K)) \ + OP(XKB_KEY_Arabic_dad, Key_Q) \ + OP(XKB_KEY_Arabic_dal, Key_RightBracket) \ + OP(XKB_KEY_Arabic_damma, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_dammatan, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_fatha, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Arabic_fathatan, LSHIFT(Key_W)) \ + OP(XKB_KEY_Arabic_feh, Key_T) \ + OP(XKB_KEY_Arabic_gaf, RALT(Key_Semicolon)) \ + OP(XKB_KEY_Arabic_ghain, Key_Y) \ + OP(XKB_KEY_Arabic_ha, Key_I) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, Key_P) \ + OP(XKB_KEY_Arabic_hamza, Key_X) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, Key_C) \ + OP(XKB_KEY_Arabic_hamzaonyeh, Key_Z) \ + OP(XKB_KEY_Arabic_hamzaunderalef, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Arabic_jeem, Key_LeftBracket) \ + OP(XKB_KEY_Arabic_jeh, RALT(Key_Period)) \ + OP(XKB_KEY_Arabic_kaf, Key_Semicolon) \ + OP(XKB_KEY_Arabic_kasra, LSHIFT(Key_C)) \ + OP(XKB_KEY_Arabic_kasratan, LSHIFT(Key_V)) \ + OP(XKB_KEY_Arabic_khah, Key_O) \ + OP(XKB_KEY_Arabic_lam, Key_G) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_meem, Key_L) \ + OP(XKB_KEY_Arabic_noon, Key_K) \ + OP(XKB_KEY_Arabic_peh, RALT(Key_F)) \ + OP(XKB_KEY_Arabic_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_Arabic_qaf, Key_R) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_V) \ + OP(XKB_KEY_Arabic_sad, Key_W) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, LSHIFT(Key_P)) \ + OP(XKB_KEY_Arabic_shadda, LSHIFT(Key_T)) \ + OP(XKB_KEY_Arabic_sheen, Key_A) \ + OP(XKB_KEY_Arabic_sukun, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_superscript_alef, RALT(Key_N)) \ + OP(XKB_KEY_Arabic_tah, Key_Quote) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_J)) \ + OP(XKB_KEY_Arabic_tcheh, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_Arabic_teh, Key_J) \ + OP(XKB_KEY_Arabic_tehmarbuta, Key_M) \ + OP(XKB_KEY_Arabic_thal, Key_B) \ + OP(XKB_KEY_Arabic_theh, Key_E) \ + OP(XKB_KEY_Arabic_veh, RALT(Key_T)) \ + OP(XKB_KEY_Arabic_waw, Key_Comma) \ + OP(XKB_KEY_Arabic_yeh, Key_D) \ + OP(XKB_KEY_Arabic_zah, Key_Slash) \ + OP(XKB_KEY_Arabic_zain, Key_Period) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, LSHIFT(Key_7)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_G)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_M)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_approxeq, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_B)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_F)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_D)) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_division, LSHIFT(Key_I)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_A)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_less, LSHIFT(Key_S)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, LSHIFT(Key_O)) \ + OP(XKB_KEY_notequal, RALT(Key_Equals)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, RALT(Key_Backtick)) \ + OP(XKB_KEY_period, LSHIFT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_slash, LSHIFT(Key_L)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, LSHIFT(Key_6)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ara { +namespace olpc { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace olpc +} // namespace ara +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ara/qwerty/keymap.h b/src/kaleidoscope/host_keymap/linux/ara/qwerty/keymap.h new file mode 100644 index 0000000000..3be209b089 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ara/qwerty/keymap.h @@ -0,0 +1,452 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ara +// variant: qwerty + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_M)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_M)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', LSHIFT(Key_O)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', LSHIFT(Key_I)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'؉', RALT(LSHIFT(Key_Backtick))) \ + OP(L'،', LSHIFT(Key_K)) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', LSHIFT(Key_P)) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؜', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', Key_X) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'آ', LSHIFT(Key_N)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_H)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', Key_C) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_Y)) /* U+0625, XKB_KEY_Arabic_hamzaunderalef, ARABIC LETTER ALEF WITH HAMZA BELOW */ \ + OP(L'ئ', Key_Z) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', Key_H) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_F) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', Key_M) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_J) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', Key_E) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_LeftBracket) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', Key_P) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_O) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_RightBracket) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', Key_Backtick) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_V) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_Period) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', Key_A) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', Key_W) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', Key_Q) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', Key_Quote) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', Key_Slash) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', Key_U) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', Key_Y) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_J)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'ف', Key_T) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_R) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', Key_Semicolon) /* U+0643, XKB_KEY_Arabic_kaf, ARABIC LETTER KAF */ \ + OP(L'ل', Key_G) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_L) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_K) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_I) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_Comma) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', Key_N) /* U+0649, XKB_KEY_Arabic_alefmaksura, ARABIC LETTER ALEF MAKSURA */ \ + OP(L'ي', Key_D) /* U+064a, XKB_KEY_Arabic_yeh, ARABIC LETTER YEH */ \ + OP(L'ً', LSHIFT(Key_W)) /* U+064b, XKB_KEY_Arabic_fathatan, ARABIC FATHATAN */ \ + OP(L'ٌ', LSHIFT(Key_R)) /* U+064c, XKB_KEY_Arabic_dammatan, ARABIC DAMMATAN */ \ + OP(L'ٍ', LSHIFT(Key_S)) /* U+064d, XKB_KEY_Arabic_kasratan, ARABIC KASRATAN */ \ + OP(L'َ', LSHIFT(Key_Q)) /* U+064e, XKB_KEY_Arabic_fatha, ARABIC FATHA */ \ + OP(L'ُ', LSHIFT(Key_E)) /* U+064f, XKB_KEY_Arabic_damma, ARABIC DAMMA */ \ + OP(L'ِ', LSHIFT(Key_A)) /* U+0650, XKB_KEY_Arabic_kasra, ARABIC KASRA */ \ + OP(L'ّ', LSHIFT(Key_Backtick)) /* U+0651, XKB_KEY_Arabic_shadda, ARABIC SHADDA */ \ + OP(L'ْ', LSHIFT(Key_X)) /* U+0652, XKB_KEY_Arabic_sukun, ARABIC SUKUN */ \ + OP(L'٠', RALT(Key_0)) /* U+0660, XKB_KEY_Arabic_0, ARABIC-INDIC DIGIT ZERO */ \ + OP(L'١', RALT(Key_1)) /* U+0661, XKB_KEY_Arabic_1, ARABIC-INDIC DIGIT ONE */ \ + OP(L'٢', RALT(Key_2)) /* U+0662, XKB_KEY_Arabic_2, ARABIC-INDIC DIGIT TWO */ \ + OP(L'٣', RALT(Key_3)) /* U+0663, XKB_KEY_Arabic_3, ARABIC-INDIC DIGIT THREE */ \ + OP(L'٤', RALT(Key_4)) /* U+0664, XKB_KEY_Arabic_4, ARABIC-INDIC DIGIT FOUR */ \ + OP(L'٥', RALT(Key_5)) /* U+0665, XKB_KEY_Arabic_5, ARABIC-INDIC DIGIT FIVE */ \ + OP(L'٦', RALT(Key_6)) /* U+0666, XKB_KEY_Arabic_6, ARABIC-INDIC DIGIT SIX */ \ + OP(L'٧', RALT(Key_7)) /* U+0667, XKB_KEY_Arabic_7, ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'٨', RALT(Key_8)) /* U+0668, XKB_KEY_Arabic_8, ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'٩', RALT(Key_9)) /* U+0669, XKB_KEY_Arabic_9, ARABIC-INDIC DIGIT NINE */ \ + OP(L'٪', RALT(Key_Backtick)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', RALT(Key_K)) \ + OP(L'٬', RALT(Key_Comma)) \ + OP(L'٭', RALT(Key_Slash)) \ + OP(L'ٰ', RALT(Key_N)) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٱ', RALT(Key_H)) \ + OP(L'پ', RALT(Key_F)) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', RALT(Key_LeftBracket)) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ژ', RALT(Key_Period)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ڤ', RALT(Key_T)) /* U+06a4, XKB_KEY_Arabic_veh, ARABIC LETTER VEH */ \ + OP(L'گ', RALT(Key_Semicolon)) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'‌', RALT(LSHIFT(Key_Slash))) \ + OP(L'‍', RALT(LSHIFT(Key_Quote))) \ + OP(L'‎', RALT(LSHIFT(Key_P))) \ + OP(L'‏', RALT(LSHIFT(Key_LeftBracket))) \ + OP(L'‑', RALT(LSHIFT(Key_Minus))) \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'…', LSHIFT(Key_NonUsPound)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‪', RALT(LSHIFT(Key_Y))) \ + OP(L'‫', RALT(LSHIFT(Key_U))) \ + OP(L'‬', RALT(LSHIFT(Key_I))) \ + OP(L' ', RALT(LSHIFT(Key_NonUsPound))) \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'⁦', RALT(LSHIFT(Key_Q))) \ + OP(L'⁧', RALT(LSHIFT(Key_W))) \ + OP(L'⁨', RALT(LSHIFT(Key_E))) \ + OP(L'⁩', RALT(LSHIFT(Key_R))) \ + OP(L'≈', RALT(LSHIFT(Key_Equals))) /* U+2248, XKB_KEY_approxeq, ALMOST EQUAL TO */ \ + OP(L'≠', RALT(Key_Equals)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'⟨', RALT(Key_NonUsPound)) \ + OP(L'⟩', RALT(Key_Quote)) \ + OP(L'ﻵ', LSHIFT(Key_B)) \ + OP(L'ﻷ', LSHIFT(Key_G)) \ + OP(L'ﻹ', LSHIFT(Key_T)) \ + OP(L'ﻻ', Key_B) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_0, RALT(Key_0)) \ + OP(XKB_KEY_Arabic_1, RALT(Key_1)) \ + OP(XKB_KEY_Arabic_2, RALT(Key_2)) \ + OP(XKB_KEY_Arabic_3, RALT(Key_3)) \ + OP(XKB_KEY_Arabic_4, RALT(Key_4)) \ + OP(XKB_KEY_Arabic_5, RALT(Key_5)) \ + OP(XKB_KEY_Arabic_6, RALT(Key_6)) \ + OP(XKB_KEY_Arabic_7, RALT(Key_7)) \ + OP(XKB_KEY_Arabic_8, RALT(Key_8)) \ + OP(XKB_KEY_Arabic_9, RALT(Key_9)) \ + OP(XKB_KEY_Arabic_ain, Key_U) \ + OP(XKB_KEY_Arabic_alef, Key_H) \ + OP(XKB_KEY_Arabic_alefmaksura, Key_N) \ + OP(XKB_KEY_Arabic_beh, Key_F) \ + OP(XKB_KEY_Arabic_comma, LSHIFT(Key_K)) \ + OP(XKB_KEY_Arabic_dad, Key_Q) \ + OP(XKB_KEY_Arabic_dal, Key_RightBracket) \ + OP(XKB_KEY_Arabic_damma, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_dammatan, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_fatha, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Arabic_fathatan, LSHIFT(Key_W)) \ + OP(XKB_KEY_Arabic_feh, Key_T) \ + OP(XKB_KEY_Arabic_gaf, RALT(Key_Semicolon)) \ + OP(XKB_KEY_Arabic_ghain, Key_Y) \ + OP(XKB_KEY_Arabic_ha, Key_I) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, Key_P) \ + OP(XKB_KEY_Arabic_hamza, Key_X) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, Key_C) \ + OP(XKB_KEY_Arabic_hamzaonyeh, Key_Z) \ + OP(XKB_KEY_Arabic_hamzaunderalef, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Arabic_jeem, Key_LeftBracket) \ + OP(XKB_KEY_Arabic_jeh, RALT(Key_Period)) \ + OP(XKB_KEY_Arabic_kaf, Key_Semicolon) \ + OP(XKB_KEY_Arabic_kasra, LSHIFT(Key_A)) \ + OP(XKB_KEY_Arabic_kasratan, LSHIFT(Key_S)) \ + OP(XKB_KEY_Arabic_khah, Key_O) \ + OP(XKB_KEY_Arabic_lam, Key_G) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_meem, Key_L) \ + OP(XKB_KEY_Arabic_noon, Key_K) \ + OP(XKB_KEY_Arabic_peh, RALT(Key_F)) \ + OP(XKB_KEY_Arabic_percent, RALT(Key_Backtick)) \ + OP(XKB_KEY_Arabic_qaf, Key_R) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_V) \ + OP(XKB_KEY_Arabic_sad, Key_W) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, LSHIFT(Key_P)) \ + OP(XKB_KEY_Arabic_shadda, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Arabic_sheen, Key_A) \ + OP(XKB_KEY_Arabic_sukun, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_superscript_alef, RALT(Key_N)) \ + OP(XKB_KEY_Arabic_tah, Key_Quote) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_J)) \ + OP(XKB_KEY_Arabic_tcheh, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_Arabic_teh, Key_J) \ + OP(XKB_KEY_Arabic_tehmarbuta, Key_M) \ + OP(XKB_KEY_Arabic_thal, Key_Backtick) \ + OP(XKB_KEY_Arabic_theh, Key_E) \ + OP(XKB_KEY_Arabic_veh, RALT(Key_T)) \ + OP(XKB_KEY_Arabic_waw, Key_Comma) \ + OP(XKB_KEY_Arabic_yeh, Key_D) \ + OP(XKB_KEY_Arabic_zah, Key_Slash) \ + OP(XKB_KEY_Arabic_zain, Key_Period) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_M)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_approxeq, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Z)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_V)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_C)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_F)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_D)) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_division, LSHIFT(Key_I)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_ellipsis, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, LSHIFT(Key_U)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_less, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, LSHIFT(Key_O)) \ + OP(XKB_KEY_notequal, RALT(Key_Equals)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, LSHIFT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_slash, LSHIFT(Key_L)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ara { +namespace qwerty { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace qwerty +} // namespace ara +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ara/qwerty_digits/keymap.h b/src/kaleidoscope/host_keymap/linux/ara/qwerty_digits/keymap.h new file mode 100644 index 0000000000..d5e55152e2 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ara/qwerty_digits/keymap.h @@ -0,0 +1,441 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ara +// variant: qwerty_digits + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_Backtick)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_M)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_Backtick)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_M)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', LSHIFT(Key_O)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', LSHIFT(Key_I)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'؉', RALT(LSHIFT(Key_5))) \ + OP(L'،', LSHIFT(Key_K)) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', LSHIFT(Key_P)) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؜', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', Key_X) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'آ', LSHIFT(Key_N)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_H)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', Key_C) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_Y)) /* U+0625, XKB_KEY_Arabic_hamzaunderalef, ARABIC LETTER ALEF WITH HAMZA BELOW */ \ + OP(L'ئ', Key_Z) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', Key_H) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_F) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', Key_M) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_J) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', Key_E) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_LeftBracket) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', Key_P) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_O) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_RightBracket) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', Key_Backtick) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_V) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_Period) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', Key_A) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', Key_W) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', Key_Q) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', Key_Quote) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', Key_Slash) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', Key_U) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', Key_Y) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_J)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'ف', Key_T) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_R) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', Key_Semicolon) /* U+0643, XKB_KEY_Arabic_kaf, ARABIC LETTER KAF */ \ + OP(L'ل', Key_G) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_L) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_K) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_I) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_Comma) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', Key_N) /* U+0649, XKB_KEY_Arabic_alefmaksura, ARABIC LETTER ALEF MAKSURA */ \ + OP(L'ي', Key_D) /* U+064a, XKB_KEY_Arabic_yeh, ARABIC LETTER YEH */ \ + OP(L'ً', LSHIFT(Key_W)) /* U+064b, XKB_KEY_Arabic_fathatan, ARABIC FATHATAN */ \ + OP(L'ٌ', LSHIFT(Key_R)) /* U+064c, XKB_KEY_Arabic_dammatan, ARABIC DAMMATAN */ \ + OP(L'ٍ', LSHIFT(Key_S)) /* U+064d, XKB_KEY_Arabic_kasratan, ARABIC KASRATAN */ \ + OP(L'َ', LSHIFT(Key_Q)) /* U+064e, XKB_KEY_Arabic_fatha, ARABIC FATHA */ \ + OP(L'ُ', LSHIFT(Key_E)) /* U+064f, XKB_KEY_Arabic_damma, ARABIC DAMMA */ \ + OP(L'ِ', LSHIFT(Key_A)) /* U+0650, XKB_KEY_Arabic_kasra, ARABIC KASRA */ \ + OP(L'ّ', LSHIFT(Key_Backtick)) /* U+0651, XKB_KEY_Arabic_shadda, ARABIC SHADDA */ \ + OP(L'ْ', LSHIFT(Key_X)) /* U+0652, XKB_KEY_Arabic_sukun, ARABIC SUKUN */ \ + OP(L'٠', Key_0) /* U+0660, XKB_KEY_Arabic_0, ARABIC-INDIC DIGIT ZERO */ \ + OP(L'١', Key_1) /* U+0661, XKB_KEY_Arabic_1, ARABIC-INDIC DIGIT ONE */ \ + OP(L'٢', Key_2) /* U+0662, XKB_KEY_Arabic_2, ARABIC-INDIC DIGIT TWO */ \ + OP(L'٣', Key_3) /* U+0663, XKB_KEY_Arabic_3, ARABIC-INDIC DIGIT THREE */ \ + OP(L'٤', Key_4) /* U+0664, XKB_KEY_Arabic_4, ARABIC-INDIC DIGIT FOUR */ \ + OP(L'٥', Key_5) /* U+0665, XKB_KEY_Arabic_5, ARABIC-INDIC DIGIT FIVE */ \ + OP(L'٦', Key_6) /* U+0666, XKB_KEY_Arabic_6, ARABIC-INDIC DIGIT SIX */ \ + OP(L'٧', Key_7) /* U+0667, XKB_KEY_Arabic_7, ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'٨', Key_8) /* U+0668, XKB_KEY_Arabic_8, ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'٩', Key_9) /* U+0669, XKB_KEY_Arabic_9, ARABIC-INDIC DIGIT NINE */ \ + OP(L'٪', LSHIFT(Key_5)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', RALT(Key_K)) \ + OP(L'٬', RALT(Key_Comma)) \ + OP(L'٭', RALT(Key_Slash)) \ + OP(L'ٰ', RALT(Key_N)) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٱ', RALT(Key_H)) \ + OP(L'پ', RALT(Key_F)) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', RALT(Key_LeftBracket)) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ژ', RALT(Key_Period)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ڤ', RALT(Key_T)) /* U+06a4, XKB_KEY_Arabic_veh, ARABIC LETTER VEH */ \ + OP(L'گ', RALT(Key_Semicolon)) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'‌', RALT(LSHIFT(Key_Slash))) \ + OP(L'‍', RALT(LSHIFT(Key_Quote))) \ + OP(L'‎', RALT(LSHIFT(Key_P))) \ + OP(L'‏', RALT(LSHIFT(Key_LeftBracket))) \ + OP(L'‑', RALT(LSHIFT(Key_Minus))) \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'…', LSHIFT(Key_NonUsPound)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‪', RALT(LSHIFT(Key_Y))) \ + OP(L'‫', RALT(LSHIFT(Key_U))) \ + OP(L'‬', RALT(LSHIFT(Key_I))) \ + OP(L' ', RALT(LSHIFT(Key_NonUsPound))) \ + OP(L'‰', RALT(LSHIFT(Key_Backtick))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'⁦', RALT(LSHIFT(Key_Q))) \ + OP(L'⁧', RALT(LSHIFT(Key_W))) \ + OP(L'⁨', RALT(LSHIFT(Key_E))) \ + OP(L'⁩', RALT(LSHIFT(Key_R))) \ + OP(L'≈', RALT(LSHIFT(Key_Equals))) /* U+2248, XKB_KEY_approxeq, ALMOST EQUAL TO */ \ + OP(L'≠', RALT(Key_Equals)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'⟨', RALT(Key_NonUsPound)) \ + OP(L'⟩', RALT(Key_Quote)) \ + OP(L'ﻵ', LSHIFT(Key_B)) \ + OP(L'ﻷ', LSHIFT(Key_G)) \ + OP(L'ﻹ', LSHIFT(Key_T)) \ + OP(L'ﻻ', Key_B) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_0)) \ + OP(XKB_KEY_1, RALT(Key_1)) \ + OP(XKB_KEY_2, RALT(Key_2)) \ + OP(XKB_KEY_3, RALT(Key_3)) \ + OP(XKB_KEY_4, RALT(Key_4)) \ + OP(XKB_KEY_5, RALT(Key_5)) \ + OP(XKB_KEY_6, RALT(Key_6)) \ + OP(XKB_KEY_7, RALT(Key_7)) \ + OP(XKB_KEY_8, RALT(Key_8)) \ + OP(XKB_KEY_9, RALT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_0, Key_0) \ + OP(XKB_KEY_Arabic_1, Key_1) \ + OP(XKB_KEY_Arabic_2, Key_2) \ + OP(XKB_KEY_Arabic_3, Key_3) \ + OP(XKB_KEY_Arabic_4, Key_4) \ + OP(XKB_KEY_Arabic_5, Key_5) \ + OP(XKB_KEY_Arabic_6, Key_6) \ + OP(XKB_KEY_Arabic_7, Key_7) \ + OP(XKB_KEY_Arabic_8, Key_8) \ + OP(XKB_KEY_Arabic_9, Key_9) \ + OP(XKB_KEY_Arabic_ain, Key_U) \ + OP(XKB_KEY_Arabic_alef, Key_H) \ + OP(XKB_KEY_Arabic_alefmaksura, Key_N) \ + OP(XKB_KEY_Arabic_beh, Key_F) \ + OP(XKB_KEY_Arabic_comma, LSHIFT(Key_K)) \ + OP(XKB_KEY_Arabic_dad, Key_Q) \ + OP(XKB_KEY_Arabic_dal, Key_RightBracket) \ + OP(XKB_KEY_Arabic_damma, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_dammatan, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_fatha, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Arabic_fathatan, LSHIFT(Key_W)) \ + OP(XKB_KEY_Arabic_feh, Key_T) \ + OP(XKB_KEY_Arabic_gaf, RALT(Key_Semicolon)) \ + OP(XKB_KEY_Arabic_ghain, Key_Y) \ + OP(XKB_KEY_Arabic_ha, Key_I) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, Key_P) \ + OP(XKB_KEY_Arabic_hamza, Key_X) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, Key_C) \ + OP(XKB_KEY_Arabic_hamzaonyeh, Key_Z) \ + OP(XKB_KEY_Arabic_hamzaunderalef, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Arabic_jeem, Key_LeftBracket) \ + OP(XKB_KEY_Arabic_jeh, RALT(Key_Period)) \ + OP(XKB_KEY_Arabic_kaf, Key_Semicolon) \ + OP(XKB_KEY_Arabic_kasra, LSHIFT(Key_A)) \ + OP(XKB_KEY_Arabic_kasratan, LSHIFT(Key_S)) \ + OP(XKB_KEY_Arabic_khah, Key_O) \ + OP(XKB_KEY_Arabic_lam, Key_G) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_meem, Key_L) \ + OP(XKB_KEY_Arabic_noon, Key_K) \ + OP(XKB_KEY_Arabic_peh, RALT(Key_F)) \ + OP(XKB_KEY_Arabic_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_Arabic_qaf, Key_R) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_V) \ + OP(XKB_KEY_Arabic_sad, Key_W) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, LSHIFT(Key_P)) \ + OP(XKB_KEY_Arabic_shadda, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Arabic_sheen, Key_A) \ + OP(XKB_KEY_Arabic_sukun, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_superscript_alef, RALT(Key_N)) \ + OP(XKB_KEY_Arabic_tah, Key_Quote) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_J)) \ + OP(XKB_KEY_Arabic_tcheh, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_Arabic_teh, Key_J) \ + OP(XKB_KEY_Arabic_tehmarbuta, Key_M) \ + OP(XKB_KEY_Arabic_thal, Key_Backtick) \ + OP(XKB_KEY_Arabic_theh, Key_E) \ + OP(XKB_KEY_Arabic_veh, RALT(Key_T)) \ + OP(XKB_KEY_Arabic_waw, Key_Comma) \ + OP(XKB_KEY_Arabic_yeh, Key_D) \ + OP(XKB_KEY_Arabic_zah, Key_Slash) \ + OP(XKB_KEY_Arabic_zain, Key_Period) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_M)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_approxeq, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Z)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_V)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_C)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_F)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_D)) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_division, LSHIFT(Key_I)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_ellipsis, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, LSHIFT(Key_U)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_less, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, LSHIFT(Key_O)) \ + OP(XKB_KEY_notequal, RALT(Key_Equals)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, RALT(Key_Backtick)) \ + OP(XKB_KEY_period, LSHIFT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_slash, LSHIFT(Key_L)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ara { +namespace qwerty_digits { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace qwerty_digits +} // namespace ara +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ara/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/ara/standard/keymap.h new file mode 100644 index 0000000000..7aea90c29c --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ara/standard/keymap.h @@ -0,0 +1,452 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ara +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_M)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_M)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', LSHIFT(Key_O)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', LSHIFT(Key_I)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'؉', RALT(LSHIFT(Key_Backtick))) \ + OP(L'،', LSHIFT(Key_K)) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', LSHIFT(Key_P)) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؜', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', Key_X) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'آ', LSHIFT(Key_N)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_H)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', Key_C) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_Y)) /* U+0625, XKB_KEY_Arabic_hamzaunderalef, ARABIC LETTER ALEF WITH HAMZA BELOW */ \ + OP(L'ئ', Key_Z) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', Key_H) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_F) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', Key_M) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_J) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', Key_E) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_LeftBracket) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', Key_P) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_O) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_RightBracket) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', Key_Backtick) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_V) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_Period) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', Key_A) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', Key_W) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', Key_Q) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', Key_Quote) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', Key_Slash) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', Key_U) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', Key_Y) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_J)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'ف', Key_T) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_R) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', Key_Semicolon) /* U+0643, XKB_KEY_Arabic_kaf, ARABIC LETTER KAF */ \ + OP(L'ل', Key_G) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_L) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_K) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_I) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_Comma) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', Key_N) /* U+0649, XKB_KEY_Arabic_alefmaksura, ARABIC LETTER ALEF MAKSURA */ \ + OP(L'ي', Key_D) /* U+064a, XKB_KEY_Arabic_yeh, ARABIC LETTER YEH */ \ + OP(L'ً', LSHIFT(Key_W)) /* U+064b, XKB_KEY_Arabic_fathatan, ARABIC FATHATAN */ \ + OP(L'ٌ', LSHIFT(Key_R)) /* U+064c, XKB_KEY_Arabic_dammatan, ARABIC DAMMATAN */ \ + OP(L'ٍ', LSHIFT(Key_S)) /* U+064d, XKB_KEY_Arabic_kasratan, ARABIC KASRATAN */ \ + OP(L'َ', LSHIFT(Key_Q)) /* U+064e, XKB_KEY_Arabic_fatha, ARABIC FATHA */ \ + OP(L'ُ', LSHIFT(Key_E)) /* U+064f, XKB_KEY_Arabic_damma, ARABIC DAMMA */ \ + OP(L'ِ', LSHIFT(Key_A)) /* U+0650, XKB_KEY_Arabic_kasra, ARABIC KASRA */ \ + OP(L'ّ', LSHIFT(Key_Backtick)) /* U+0651, XKB_KEY_Arabic_shadda, ARABIC SHADDA */ \ + OP(L'ْ', LSHIFT(Key_X)) /* U+0652, XKB_KEY_Arabic_sukun, ARABIC SUKUN */ \ + OP(L'٠', RALT(Key_0)) /* U+0660, XKB_KEY_Arabic_0, ARABIC-INDIC DIGIT ZERO */ \ + OP(L'١', RALT(Key_1)) /* U+0661, XKB_KEY_Arabic_1, ARABIC-INDIC DIGIT ONE */ \ + OP(L'٢', RALT(Key_2)) /* U+0662, XKB_KEY_Arabic_2, ARABIC-INDIC DIGIT TWO */ \ + OP(L'٣', RALT(Key_3)) /* U+0663, XKB_KEY_Arabic_3, ARABIC-INDIC DIGIT THREE */ \ + OP(L'٤', RALT(Key_4)) /* U+0664, XKB_KEY_Arabic_4, ARABIC-INDIC DIGIT FOUR */ \ + OP(L'٥', RALT(Key_5)) /* U+0665, XKB_KEY_Arabic_5, ARABIC-INDIC DIGIT FIVE */ \ + OP(L'٦', RALT(Key_6)) /* U+0666, XKB_KEY_Arabic_6, ARABIC-INDIC DIGIT SIX */ \ + OP(L'٧', RALT(Key_7)) /* U+0667, XKB_KEY_Arabic_7, ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'٨', RALT(Key_8)) /* U+0668, XKB_KEY_Arabic_8, ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'٩', RALT(Key_9)) /* U+0669, XKB_KEY_Arabic_9, ARABIC-INDIC DIGIT NINE */ \ + OP(L'٪', RALT(Key_Backtick)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', RALT(Key_K)) \ + OP(L'٬', RALT(Key_Comma)) \ + OP(L'٭', RALT(Key_Slash)) \ + OP(L'ٰ', RALT(Key_N)) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٱ', RALT(Key_H)) \ + OP(L'پ', RALT(Key_F)) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', RALT(Key_LeftBracket)) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ژ', RALT(Key_Period)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ڤ', RALT(Key_T)) /* U+06a4, XKB_KEY_Arabic_veh, ARABIC LETTER VEH */ \ + OP(L'گ', RALT(Key_Semicolon)) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'‌', RALT(LSHIFT(Key_Slash))) \ + OP(L'‍', RALT(LSHIFT(Key_Quote))) \ + OP(L'‎', RALT(LSHIFT(Key_P))) \ + OP(L'‏', RALT(LSHIFT(Key_LeftBracket))) \ + OP(L'‑', RALT(LSHIFT(Key_Minus))) \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'…', LSHIFT(Key_NonUsPound)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‪', RALT(LSHIFT(Key_Y))) \ + OP(L'‫', RALT(LSHIFT(Key_U))) \ + OP(L'‬', RALT(LSHIFT(Key_I))) \ + OP(L' ', RALT(LSHIFT(Key_NonUsPound))) \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'⁦', RALT(LSHIFT(Key_Q))) \ + OP(L'⁧', RALT(LSHIFT(Key_W))) \ + OP(L'⁨', RALT(LSHIFT(Key_E))) \ + OP(L'⁩', RALT(LSHIFT(Key_R))) \ + OP(L'≈', RALT(LSHIFT(Key_Equals))) /* U+2248, XKB_KEY_approxeq, ALMOST EQUAL TO */ \ + OP(L'≠', RALT(Key_Equals)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'⟨', RALT(Key_NonUsPound)) \ + OP(L'⟩', RALT(Key_Quote)) \ + OP(L'ﻵ', LSHIFT(Key_B)) \ + OP(L'ﻷ', LSHIFT(Key_G)) \ + OP(L'ﻹ', LSHIFT(Key_T)) \ + OP(L'ﻻ', Key_B) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_0, RALT(Key_0)) \ + OP(XKB_KEY_Arabic_1, RALT(Key_1)) \ + OP(XKB_KEY_Arabic_2, RALT(Key_2)) \ + OP(XKB_KEY_Arabic_3, RALT(Key_3)) \ + OP(XKB_KEY_Arabic_4, RALT(Key_4)) \ + OP(XKB_KEY_Arabic_5, RALT(Key_5)) \ + OP(XKB_KEY_Arabic_6, RALT(Key_6)) \ + OP(XKB_KEY_Arabic_7, RALT(Key_7)) \ + OP(XKB_KEY_Arabic_8, RALT(Key_8)) \ + OP(XKB_KEY_Arabic_9, RALT(Key_9)) \ + OP(XKB_KEY_Arabic_ain, Key_U) \ + OP(XKB_KEY_Arabic_alef, Key_H) \ + OP(XKB_KEY_Arabic_alefmaksura, Key_N) \ + OP(XKB_KEY_Arabic_beh, Key_F) \ + OP(XKB_KEY_Arabic_comma, LSHIFT(Key_K)) \ + OP(XKB_KEY_Arabic_dad, Key_Q) \ + OP(XKB_KEY_Arabic_dal, Key_RightBracket) \ + OP(XKB_KEY_Arabic_damma, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_dammatan, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_fatha, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Arabic_fathatan, LSHIFT(Key_W)) \ + OP(XKB_KEY_Arabic_feh, Key_T) \ + OP(XKB_KEY_Arabic_gaf, RALT(Key_Semicolon)) \ + OP(XKB_KEY_Arabic_ghain, Key_Y) \ + OP(XKB_KEY_Arabic_ha, Key_I) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, Key_P) \ + OP(XKB_KEY_Arabic_hamza, Key_X) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, Key_C) \ + OP(XKB_KEY_Arabic_hamzaonyeh, Key_Z) \ + OP(XKB_KEY_Arabic_hamzaunderalef, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Arabic_jeem, Key_LeftBracket) \ + OP(XKB_KEY_Arabic_jeh, RALT(Key_Period)) \ + OP(XKB_KEY_Arabic_kaf, Key_Semicolon) \ + OP(XKB_KEY_Arabic_kasra, LSHIFT(Key_A)) \ + OP(XKB_KEY_Arabic_kasratan, LSHIFT(Key_S)) \ + OP(XKB_KEY_Arabic_khah, Key_O) \ + OP(XKB_KEY_Arabic_lam, Key_G) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_meem, Key_L) \ + OP(XKB_KEY_Arabic_noon, Key_K) \ + OP(XKB_KEY_Arabic_peh, RALT(Key_F)) \ + OP(XKB_KEY_Arabic_percent, RALT(Key_Backtick)) \ + OP(XKB_KEY_Arabic_qaf, Key_R) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_V) \ + OP(XKB_KEY_Arabic_sad, Key_W) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, LSHIFT(Key_P)) \ + OP(XKB_KEY_Arabic_shadda, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Arabic_sheen, Key_A) \ + OP(XKB_KEY_Arabic_sukun, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_superscript_alef, RALT(Key_N)) \ + OP(XKB_KEY_Arabic_tah, Key_Quote) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_J)) \ + OP(XKB_KEY_Arabic_tcheh, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_Arabic_teh, Key_J) \ + OP(XKB_KEY_Arabic_tehmarbuta, Key_M) \ + OP(XKB_KEY_Arabic_thal, Key_Backtick) \ + OP(XKB_KEY_Arabic_theh, Key_E) \ + OP(XKB_KEY_Arabic_veh, RALT(Key_T)) \ + OP(XKB_KEY_Arabic_waw, Key_Comma) \ + OP(XKB_KEY_Arabic_yeh, Key_D) \ + OP(XKB_KEY_Arabic_zah, Key_Slash) \ + OP(XKB_KEY_Arabic_zain, Key_Period) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_M)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_approxeq, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Z)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_V)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_C)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_F)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_D)) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_division, LSHIFT(Key_I)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_ellipsis, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, LSHIFT(Key_U)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_less, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, LSHIFT(Key_O)) \ + OP(XKB_KEY_notequal, RALT(Key_Equals)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, LSHIFT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_slash, LSHIFT(Key_L)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ara { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace ara +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ara/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/ara/sun_type6/keymap.h new file mode 100644 index 0000000000..055e6960bf --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ara/sun_type6/keymap.h @@ -0,0 +1,564 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ara +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', RALT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', RALT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_RightBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_LeftBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', RALT(LSHIFT(Key_Slash))) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', RALT(LSHIFT(Key_A))) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', RALT(LSHIFT(Key_B))) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', RALT(LSHIFT(Key_C))) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', RALT(LSHIFT(Key_D))) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', RALT(LSHIFT(Key_E))) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', RALT(LSHIFT(Key_F))) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', RALT(LSHIFT(Key_G))) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', RALT(LSHIFT(Key_H))) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', RALT(LSHIFT(Key_I))) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', RALT(LSHIFT(Key_J))) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', RALT(LSHIFT(Key_K))) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', RALT(LSHIFT(Key_L))) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', RALT(LSHIFT(Key_M))) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', RALT(LSHIFT(Key_N))) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', RALT(LSHIFT(Key_O))) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', RALT(LSHIFT(Key_P))) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', RALT(LSHIFT(Key_R))) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', RALT(LSHIFT(Key_S))) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', RALT(LSHIFT(Key_T))) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', RALT(LSHIFT(Key_U))) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', RALT(LSHIFT(Key_V))) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', RALT(LSHIFT(Key_Y))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', RALT(LSHIFT(Key_Z))) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', RALT(Key_A)) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', RALT(Key_B)) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', RALT(Key_C)) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', RALT(Key_D)) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', RALT(Key_E)) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', RALT(Key_F)) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', RALT(Key_G)) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', RALT(Key_H)) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', RALT(Key_I)) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', RALT(Key_J)) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', RALT(Key_K)) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', RALT(Key_L)) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', RALT(Key_M)) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', RALT(Key_N)) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', RALT(Key_O)) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', RALT(Key_P)) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', RALT(Key_R)) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', RALT(Key_S)) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', RALT(Key_T)) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', RALT(Key_U)) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', RALT(Key_V)) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', RALT(Key_Y)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', RALT(Key_Z)) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', RALT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', RALT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_RightBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_LeftBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', RALT(LSHIFT(Key_Slash))) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', RALT(LSHIFT(Key_A))) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', RALT(LSHIFT(Key_B))) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', RALT(LSHIFT(Key_C))) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', RALT(LSHIFT(Key_D))) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', RALT(LSHIFT(Key_E))) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', RALT(LSHIFT(Key_F))) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', RALT(LSHIFT(Key_G))) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', RALT(LSHIFT(Key_H))) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', RALT(LSHIFT(Key_I))) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', RALT(LSHIFT(Key_J))) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', RALT(LSHIFT(Key_K))) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', RALT(LSHIFT(Key_L))) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', RALT(LSHIFT(Key_M))) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', RALT(LSHIFT(Key_N))) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', RALT(LSHIFT(Key_O))) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', RALT(LSHIFT(Key_P))) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', RALT(LSHIFT(Key_R))) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', RALT(LSHIFT(Key_S))) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', RALT(LSHIFT(Key_T))) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', RALT(LSHIFT(Key_U))) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', RALT(LSHIFT(Key_V))) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', RALT(LSHIFT(Key_Y))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', RALT(LSHIFT(Key_Z))) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', RALT(Key_A)) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', RALT(Key_B)) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', RALT(Key_C)) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', RALT(Key_D)) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', RALT(Key_E)) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', RALT(Key_F)) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', RALT(Key_G)) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', RALT(Key_H)) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', RALT(Key_I)) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', RALT(Key_J)) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', RALT(Key_K)) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', RALT(Key_L)) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', RALT(Key_M)) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', RALT(Key_N)) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', RALT(Key_O)) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', RALT(Key_P)) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', RALT(Key_R)) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', RALT(Key_S)) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', RALT(Key_T)) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', RALT(Key_U)) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', RALT(Key_V)) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', RALT(Key_Y)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', RALT(Key_Z)) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'×', LSHIFT(Key_O)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', LSHIFT(Key_I)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'،', LSHIFT(Key_K)) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', LSHIFT(Key_P)) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', Key_X) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'آ', LSHIFT(Key_N)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_H)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', Key_C) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_Y)) /* U+0625, XKB_KEY_Arabic_hamzaunderalef, ARABIC LETTER ALEF WITH HAMZA BELOW */ \ + OP(L'ئ', Key_Z) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', Key_H) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_F) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', Key_M) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_J) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', Key_E) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_LeftBracket) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', Key_P) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_O) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_RightBracket) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', Key_Backtick) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_V) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_Period) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', Key_A) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', Key_W) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', Key_Q) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', Key_Quote) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', Key_Slash) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', Key_U) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', Key_Y) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_J)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'ف', Key_T) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_R) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', Key_Semicolon) /* U+0643, XKB_KEY_Arabic_kaf, ARABIC LETTER KAF */ \ + OP(L'ل', Key_G) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_L) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_K) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_I) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_Comma) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', Key_N) /* U+0649, XKB_KEY_Arabic_alefmaksura, ARABIC LETTER ALEF MAKSURA */ \ + OP(L'ي', Key_D) /* U+064a, XKB_KEY_Arabic_yeh, ARABIC LETTER YEH */ \ + OP(L'ً', LSHIFT(Key_W)) /* U+064b, XKB_KEY_Arabic_fathatan, ARABIC FATHATAN */ \ + OP(L'ٌ', LSHIFT(Key_R)) /* U+064c, XKB_KEY_Arabic_dammatan, ARABIC DAMMATAN */ \ + OP(L'ٍ', LSHIFT(Key_S)) /* U+064d, XKB_KEY_Arabic_kasratan, ARABIC KASRATAN */ \ + OP(L'َ', LSHIFT(Key_Q)) /* U+064e, XKB_KEY_Arabic_fatha, ARABIC FATHA */ \ + OP(L'ُ', LSHIFT(Key_E)) /* U+064f, XKB_KEY_Arabic_damma, ARABIC DAMMA */ \ + OP(L'ِ', LSHIFT(Key_A)) /* U+0650, XKB_KEY_Arabic_kasra, ARABIC KASRA */ \ + OP(L'ّ', LSHIFT(Key_Backtick)) /* U+0651, XKB_KEY_Arabic_shadda, ARABIC SHADDA */ \ + OP(L'ْ', LSHIFT(Key_X)) /* U+0652, XKB_KEY_Arabic_sukun, ARABIC SUKUN */ \ + OP(L'٠', Key_0) /* U+0660, XKB_KEY_Arabic_0, ARABIC-INDIC DIGIT ZERO */ \ + OP(L'١', Key_1) /* U+0661, XKB_KEY_Arabic_1, ARABIC-INDIC DIGIT ONE */ \ + OP(L'٢', Key_2) /* U+0662, XKB_KEY_Arabic_2, ARABIC-INDIC DIGIT TWO */ \ + OP(L'٣', Key_3) /* U+0663, XKB_KEY_Arabic_3, ARABIC-INDIC DIGIT THREE */ \ + OP(L'٤', Key_4) /* U+0664, XKB_KEY_Arabic_4, ARABIC-INDIC DIGIT FOUR */ \ + OP(L'٥', Key_5) /* U+0665, XKB_KEY_Arabic_5, ARABIC-INDIC DIGIT FIVE */ \ + OP(L'٦', Key_6) /* U+0666, XKB_KEY_Arabic_6, ARABIC-INDIC DIGIT SIX */ \ + OP(L'٧', Key_7) /* U+0667, XKB_KEY_Arabic_7, ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'٨', Key_8) /* U+0668, XKB_KEY_Arabic_8, ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'٩', Key_9) /* U+0669, XKB_KEY_Arabic_9, ARABIC-INDIC DIGIT NINE */ \ + OP(L'ﻵ', LSHIFT(Key_B)) \ + OP(L'ﻷ', LSHIFT(Key_G)) \ + OP(L'ﻹ', LSHIFT(Key_T)) \ + OP(L'ﻻ', Key_B) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_0)) \ + OP(XKB_KEY_1, RALT(Key_1)) \ + OP(XKB_KEY_2, RALT(Key_2)) \ + OP(XKB_KEY_3, RALT(Key_3)) \ + OP(XKB_KEY_4, RALT(Key_4)) \ + OP(XKB_KEY_5, RALT(Key_5)) \ + OP(XKB_KEY_6, RALT(Key_6)) \ + OP(XKB_KEY_7, RALT(Key_7)) \ + OP(XKB_KEY_8, RALT(Key_8)) \ + OP(XKB_KEY_9, RALT(Key_9)) \ + OP(XKB_KEY_A, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_0, Key_0) \ + OP(XKB_KEY_Arabic_1, Key_1) \ + OP(XKB_KEY_Arabic_2, Key_2) \ + OP(XKB_KEY_Arabic_3, Key_3) \ + OP(XKB_KEY_Arabic_4, Key_4) \ + OP(XKB_KEY_Arabic_5, Key_5) \ + OP(XKB_KEY_Arabic_6, Key_6) \ + OP(XKB_KEY_Arabic_7, Key_7) \ + OP(XKB_KEY_Arabic_8, Key_8) \ + OP(XKB_KEY_Arabic_9, Key_9) \ + OP(XKB_KEY_Arabic_ain, Key_U) \ + OP(XKB_KEY_Arabic_alef, Key_H) \ + OP(XKB_KEY_Arabic_alefmaksura, Key_N) \ + OP(XKB_KEY_Arabic_beh, Key_F) \ + OP(XKB_KEY_Arabic_comma, LSHIFT(Key_K)) \ + OP(XKB_KEY_Arabic_dad, Key_Q) \ + OP(XKB_KEY_Arabic_dal, Key_RightBracket) \ + OP(XKB_KEY_Arabic_damma, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_dammatan, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_fatha, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Arabic_fathatan, LSHIFT(Key_W)) \ + OP(XKB_KEY_Arabic_feh, Key_T) \ + OP(XKB_KEY_Arabic_ghain, Key_Y) \ + OP(XKB_KEY_Arabic_ha, Key_I) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, Key_P) \ + OP(XKB_KEY_Arabic_hamza, Key_X) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, Key_C) \ + OP(XKB_KEY_Arabic_hamzaonyeh, Key_Z) \ + OP(XKB_KEY_Arabic_hamzaunderalef, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Arabic_jeem, Key_LeftBracket) \ + OP(XKB_KEY_Arabic_kaf, Key_Semicolon) \ + OP(XKB_KEY_Arabic_kasra, LSHIFT(Key_A)) \ + OP(XKB_KEY_Arabic_kasratan, LSHIFT(Key_S)) \ + OP(XKB_KEY_Arabic_khah, Key_O) \ + OP(XKB_KEY_Arabic_lam, Key_G) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_meem, Key_L) \ + OP(XKB_KEY_Arabic_noon, Key_K) \ + OP(XKB_KEY_Arabic_qaf, Key_R) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_V) \ + OP(XKB_KEY_Arabic_sad, Key_W) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, LSHIFT(Key_P)) \ + OP(XKB_KEY_Arabic_shadda, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Arabic_sheen, Key_A) \ + OP(XKB_KEY_Arabic_sukun, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_tah, Key_Quote) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_J)) \ + OP(XKB_KEY_Arabic_teh, Key_J) \ + OP(XKB_KEY_Arabic_tehmarbuta, Key_M) \ + OP(XKB_KEY_Arabic_thal, Key_Backtick) \ + OP(XKB_KEY_Arabic_theh, Key_E) \ + OP(XKB_KEY_Arabic_waw, Key_Comma) \ + OP(XKB_KEY_Arabic_yeh, Key_D) \ + OP(XKB_KEY_Arabic_zah, Key_Slash) \ + OP(XKB_KEY_Arabic_zain, Key_Period) \ + OP(XKB_KEY_B, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_H, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_K, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_W, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_X, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Z)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, RALT(Key_B)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_V)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_C)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_c, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, RALT(Key_Comma)) \ + OP(XKB_KEY_d, RALT(Key_D)) \ + OP(XKB_KEY_division, LSHIFT(Key_I)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, RALT(Key_E)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, RALT(Key_F)) \ + OP(XKB_KEY_g, RALT(Key_G)) \ + OP(XKB_KEY_grave, LSHIFT(Key_U)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_h, RALT(Key_H)) \ + OP(XKB_KEY_i, RALT(Key_I)) \ + OP(XKB_KEY_j, RALT(Key_J)) \ + OP(XKB_KEY_k, RALT(Key_K)) \ + OP(XKB_KEY_l, RALT(Key_L)) \ + OP(XKB_KEY_less, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_m, RALT(Key_M)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, LSHIFT(Key_O)) \ + OP(XKB_KEY_n, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, RALT(Key_O)) \ + OP(XKB_KEY_p, RALT(Key_P)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, RALT(Key_R)) \ + OP(XKB_KEY_s, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, RALT(Key_Semicolon)) \ + OP(XKB_KEY_slash, LSHIFT(Key_L)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, RALT(Key_T)) \ + OP(XKB_KEY_u, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, RALT(Key_V)) \ + OP(XKB_KEY_w, RALT(Key_W)) \ + OP(XKB_KEY_x, RALT(Key_X)) \ + OP(XKB_KEY_y, RALT(Key_Y)) \ + OP(XKB_KEY_z, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ara { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace ara +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ara/uga/keymap.h b/src/kaleidoscope/host_keymap/linux/ara/uga/keymap.h new file mode 100644 index 0000000000..673795aed7 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ara/uga/keymap.h @@ -0,0 +1,330 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ara +// variant: uga + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_M)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_P)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_RightBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_LeftBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', Key_N) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', LSHIFT(Key_D)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_F)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_C)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_V)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_M)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_P)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_RightBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_LeftBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', Key_N) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', LSHIFT(Key_D)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_F)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_C)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_V)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'«', LSHIFT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'·', LSHIFT(Key_Slash)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'»', LSHIFT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', LSHIFT(Key_O)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', LSHIFT(Key_I)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ʼ', Key_M) \ + OP(L'–', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'…', LSHIFT(Key_NonUsPound)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‹', LSHIFT(Key_B)) \ + OP(L'›', LSHIFT(Key_N)) \ + OP(L'⟨', LSHIFT(Key_A)) \ + OP(L'⟩', LSHIFT(Key_S)) \ + OP(L'𐎀', Key_H) \ + OP(L'𐎁', Key_F) \ + OP(L'𐎂', Key_LeftBracket) \ + OP(L'𐎃', Key_O) \ + OP(L'𐎄', Key_RightBracket) \ + OP(L'𐎅', Key_I) \ + OP(L'𐎆', Key_Comma) \ + OP(L'𐎇', Key_Period) \ + OP(L'𐎈', Key_P) \ + OP(L'𐎉', Key_Quote) \ + OP(L'𐎊', Key_D) \ + OP(L'𐎋', Key_Semicolon) \ + OP(L'𐎌', Key_A) \ + OP(L'𐎍', Key_G) \ + OP(L'𐎎', Key_L) \ + OP(L'𐎏', Key_Backtick) \ + OP(L'𐎐', Key_K) \ + OP(L'𐎑', Key_Slash) \ + OP(L'𐎒', Key_S) \ + OP(L'𐎓', Key_U) \ + OP(L'𐎔', Key_T) \ + OP(L'𐎕', Key_W) \ + OP(L'𐎖', Key_R) \ + OP(L'𐎗', Key_V) \ + OP(L'𐎘', Key_E) \ + OP(L'𐎙', Key_Y) \ + OP(L'𐎚', Key_J) \ + OP(L'𐎛', Key_Z) \ + OP(L'𐎜', Key_C) \ + OP(L'𐎝', Key_Q) \ + OP(L'𐎟', Key_B) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_M)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_C)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_V)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_D)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_F)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_division, LSHIFT(Key_I)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_ellipsis, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_endash, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, LSHIFT(Key_U)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotleft, LSHIFT(Key_Z)) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_X)) \ + OP(XKB_KEY_less, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, LSHIFT(Key_O)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, LSHIFT(Key_Period)) \ + OP(XKB_KEY_periodcentered, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, Key_N) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_P)) \ + OP(XKB_KEY_slash, LSHIFT(Key_L)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ara { +namespace uga { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace uga +} // namespace ara +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/at/mac/keymap.h b/src/kaleidoscope/host_keymap/linux/at/mac/keymap.h new file mode 100644 index 0000000000..bd3ffa45b6 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/at/mac/keymap.h @@ -0,0 +1,571 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: at +// variant: mac + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_L)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_6)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_8)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_7)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_9)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_L)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_6)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_8)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_7)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_9)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(Key_U)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_G)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_H)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Q)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_RightBracket))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'·', RALT(Key_LeftBracket)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_U))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', RALT(LSHIFT(Key_A))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Û', RALT(LSHIFT(Key_I))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', Key_Minus) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', RALT(Key_A)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ſ', RALT(Key_S)) \ + OP(L'ẞ', RALT(LSHIFT(Key_S))) \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_B))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_NonUsPound)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_V))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_B)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_V)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_Period)) \ + OP(L'′', RALT(Key_Backtick)) \ + OP(L'″', RALT(LSHIFT(Key_Backtick))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_A)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_L)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_7)) \ + OP(XKB_KEY_braceleft, RALT(Key_8)) \ + OP(XKB_KEY_braceright, RALT(Key_9)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_6)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_G)) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_J)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_belowmacron, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_belowmacron */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_Backtick) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_diaeresis, RALT(Key_U)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_V)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Q)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_ordfeminine, RALT(Key_H)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Minus) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace at { +namespace mac { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mac +} // namespace at +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/at/nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/at/nodeadkeys/keymap.h new file mode 100644 index 0000000000..cdec2487ca --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/at/nodeadkeys/keymap.h @@ -0,0 +1,598 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: at +// variant: nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(Key_LeftBracket)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_RightBracket))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', Key_Equals) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Comma)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¸', RALT(Key_Equals)) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', Key_Minus) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ſ', RALT(Key_S)) \ + OP(L'˝', RALT(Key_Semicolon)) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'ẞ', RALT(LSHIFT(Key_S))) \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_B))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_NonUsPound)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_V))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_B)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_N)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_V)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_Period)) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, Key_Equals) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_Backtick) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cedilla, RALT(Key_Equals)) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_J)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_belowmacron, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_belowmacron */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_diaeresis, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_V)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Comma)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_N)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Minus) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace at { +namespace nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace nodeadkeys +} // namespace at +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/at/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/at/standard/keymap.h new file mode 100644 index 0000000000..1233d1ca9b --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/at/standard/keymap.h @@ -0,0 +1,596 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: at +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_RightBracket))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Comma)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', Key_Minus) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ſ', RALT(Key_S)) \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'ẞ', RALT(LSHIFT(Key_S))) \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_B))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_NonUsPound)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_V))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_B)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_N)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_V)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_Period)) \ + OP(L'′', RALT(Key_Backtick)) \ + OP(L'″', RALT(LSHIFT(Key_Backtick))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_J)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_belowmacron, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_belowmacron */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_Backtick) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_Semicolon)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_V)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Comma)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_N)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Minus) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace at { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace at +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/at/sundeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/at/sundeadkeys/keymap.h new file mode 100644 index 0000000000..92ed037bde --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/at/sundeadkeys/keymap.h @@ -0,0 +1,596 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: at +// variant: sundeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_RightBracket))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Comma)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', Key_Minus) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ſ', RALT(Key_S)) \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'ẞ', RALT(LSHIFT(Key_S))) \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_B))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_NonUsPound)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_V))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_B)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_N)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_V)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_Period)) \ + OP(L'′', RALT(Key_Backtick)) \ + OP(L'″', RALT(LSHIFT(Key_Backtick))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_J)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_belowmacron, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_belowmacron */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_Backtick) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_Semicolon)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_V)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Comma)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_N)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Minus) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace at { +namespace sundeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sundeadkeys +} // namespace at +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/au/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/au/standard/keymap.h new file mode 100644 index 0000000000..0a6b8b583e --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/au/standard/keymap.h @@ -0,0 +1,439 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: au +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace au { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace au +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/az/cyrillic/keymap.h b/src/kaleidoscope/host_keymap/linux/az/cyrillic/keymap.h new file mode 100644 index 0000000000..24f73fbf75 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/az/cyrillic/keymap.h @@ -0,0 +1,365 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: az +// variant: cyrillic + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Ј', LSHIFT(Key_Q)) /* U+0408, XKB_KEY_Cyrillic_JE, CYRILLIC CAPITAL LETTER JE */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ј', Key_Q) /* U+0458, XKB_KEY_Cyrillic_je, CYRILLIC SMALL LETTER JE */ \ + OP(L'Ғ', LSHIFT(Key_M)) /* U+0492, XKB_KEY_Cyrillic_GHE_bar, CYRILLIC CAPITAL LETTER GHE WITH STROKE */ \ + OP(L'ғ', Key_M) /* U+0493, XKB_KEY_Cyrillic_ghe_bar, CYRILLIC SMALL LETTER GHE WITH STROKE */ \ + OP(L'Ҝ', LSHIFT(Key_Quote)) /* U+049c, XKB_KEY_Cyrillic_KA_vertstroke, CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE */ \ + OP(L'ҝ', Key_Quote) /* U+049d, XKB_KEY_Cyrillic_ka_vertstroke, CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE */ \ + OP(L'Ү', LSHIFT(Key_W)) /* U+04ae, XKB_KEY_Cyrillic_U_straight, CYRILLIC CAPITAL LETTER STRAIGHT U */ \ + OP(L'ү', Key_W) /* U+04af, XKB_KEY_Cyrillic_u_straight, CYRILLIC SMALL LETTER STRAIGHT U */ \ + OP(L'Ҹ', LSHIFT(Key_RightBracket)) /* U+04b8, XKB_KEY_Cyrillic_CHE_vertstroke, CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE */ \ + OP(L'ҹ', Key_RightBracket) /* U+04b9, XKB_KEY_Cyrillic_che_vertstroke, CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE */ \ + OP(L'Һ', LSHIFT(Key_O)) /* U+04ba, XKB_KEY_Cyrillic_SHHA, CYRILLIC CAPITAL LETTER SHHA */ \ + OP(L'һ', Key_O) /* U+04bb, XKB_KEY_Cyrillic_shha, CYRILLIC SMALL LETTER SHHA */ \ + OP(L'Ә', LSHIFT(Key_Z)) /* U+04d8, XKB_KEY_Cyrillic_SCHWA, CYRILLIC CAPITAL LETTER SCHWA */ \ + OP(L'ә', Key_Z) /* U+04d9, XKB_KEY_Cyrillic_schwa, CYRILLIC SMALL LETTER SCHWA */ \ + OP(L'Ө', LSHIFT(Key_Period)) /* U+04e8, XKB_KEY_Cyrillic_O_bar, CYRILLIC CAPITAL LETTER BARRED O */ \ + OP(L'ө', Key_Period) /* U+04e9, XKB_KEY_Cyrillic_o_bar, CYRILLIC SMALL LETTER BARRED O */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_CHE_vertstroke, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_GHE_bar, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_JE, LSHIFT(Key_Q)) /* XKB_KEY_Serbian_JE, deprecated */ \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_KA_vertstroke, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_O_bar, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SCHWA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_U_straight, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_che_vertstroke, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ghe_bar, Key_M) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_je, Key_Q) /* XKB_KEY_Serbian_je, deprecated */ \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_ka_vertstroke, Key_Quote) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_o_bar, Key_Period) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_schwa, Key_Z) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shha, Key_O) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_u_straight, Key_W) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_colon, LSHIFT(Key_6)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_question, LSHIFT(Key_7)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_4)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace az { +namespace cyrillic { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace cyrillic +} // namespace az +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/az/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/az/standard/keymap.h new file mode 100644 index 0000000000..184e6b253b --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/az/standard/keymap.h @@ -0,0 +1,433 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: az +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_Semicolon)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_Semicolon)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ç', LSHIFT(Key_Comma)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ö', LSHIFT(Key_LeftBracket)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'Ü', LSHIFT(Key_W)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'ç', Key_Comma) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ö', Key_LeftBracket) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ü', Key_W) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Ğ', LSHIFT(Key_RightBracket)) /* U+011e, XKB_KEY_Gbreve, LATIN CAPITAL LETTER G WITH BREVE */ \ + OP(L'ğ', Key_RightBracket) /* U+011f, XKB_KEY_gbreve, LATIN SMALL LETTER G WITH BREVE */ \ + OP(L'İ', LSHIFT(Key_I)) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'ı', Key_Semicolon) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ş', LSHIFT(Key_Period)) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', Key_Period) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ə', LSHIFT(Key_Quote)) /* U+018f, XKB_KEY_SCHWA, LATIN CAPITAL LETTER SCHWA */ \ + OP(L'ə', Key_Quote) /* U+0259, XKB_KEY_schwa, LATIN SMALL LETTER SCHWA */ \ + OP(L'Ⅶ', LSHIFT(Key_3)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gbreve, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, LSHIFT(Key_I)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_SCHWA, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Scedilla, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_W)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_Comma) \ + OP(XKB_KEY_colon, LSHIFT(Key_6)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gbreve, Key_RightBracket) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, Key_Semicolon) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_7)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, Key_Period) \ + OP(XKB_KEY_schwa, Key_Quote) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_4)) \ + OP(XKB_KEY_slash, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_W) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace az { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace az +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ba/alternatequotes/keymap.h b/src/kaleidoscope/host_keymap/linux/ba/alternatequotes/keymap.h new file mode 100644 index 0000000000..f3975b4591 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ba/alternatequotes/keymap.h @@ -0,0 +1,567 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ba +// variant: alternatequotes + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_D)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_S)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ć', LSHIFT(Key_Quote)) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', Key_Quote) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', LSHIFT(Key_Semicolon)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Semicolon) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_RightBracket)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_RightBracket) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Š', LSHIFT(Key_LeftBracket)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_LeftBracket) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ž', LSHIFT(Key_NonUsPound)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_NonUsPound) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, Key_Quote) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ccaron, Key_Semicolon) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_D)) \ + OP(XKB_KEY_guillemotright, RALT(Key_S)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_LeftBracket) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + OP(XKB_KEY_zcaron, Key_NonUsPound) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ba { +namespace alternatequotes { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace alternatequotes +} // namespace ba +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ba/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/ba/standard/keymap.h new file mode 100644 index 0000000000..d7818a1fd2 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ba/standard/keymap.h @@ -0,0 +1,571 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ba +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(LSHIFT(Key_D))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_S))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ć', LSHIFT(Key_Quote)) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', Key_Quote) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', LSHIFT(Key_Semicolon)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Semicolon) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_RightBracket)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_RightBracket) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Š', LSHIFT(Key_LeftBracket)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_LeftBracket) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ž', LSHIFT(Key_NonUsPound)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_NonUsPound) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_D)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_S)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, Key_Quote) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ccaron, Key_Semicolon) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_S)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_D)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_LeftBracket) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + OP(XKB_KEY_zcaron, Key_NonUsPound) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ba { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace ba +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ba/unicode/keymap.h b/src/kaleidoscope/host_keymap/linux/ba/unicode/keymap.h new file mode 100644 index 0000000000..bcc7b8e426 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ba/unicode/keymap.h @@ -0,0 +1,554 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ba +// variant: unicode + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(LSHIFT(Key_D))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_S))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ć', LSHIFT(Key_Quote)) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', Key_Quote) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', LSHIFT(Key_Semicolon)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Semicolon) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_RightBracket)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_RightBracket) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Š', LSHIFT(Key_LeftBracket)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_LeftBracket) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ž', LSHIFT(Key_NonUsPound)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_NonUsPound) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'DŽ', RALT(LSHIFT(Key_X))) \ + OP(L'Dž', LSHIFT(Key_X)) \ + OP(L'dž', Key_X) \ + OP(L'LJ', RALT(LSHIFT(Key_Q))) \ + OP(L'Lj', LSHIFT(Key_Q)) \ + OP(L'lj', Key_Q) \ + OP(L'NJ', RALT(LSHIFT(Key_W))) \ + OP(L'Nj', LSHIFT(Key_W)) \ + OP(L'nj', Key_W) \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_D)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_S)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, Key_Quote) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ccaron, Key_Semicolon) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_S)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_D)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_LeftBracket) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + OP(XKB_KEY_zcaron, Key_NonUsPound) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ba { +namespace unicode { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace unicode +} // namespace ba +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ba/unicodeus/keymap.h b/src/kaleidoscope/host_keymap/linux/ba/unicodeus/keymap.h new file mode 100644 index 0000000000..8d411a31b3 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ba/unicodeus/keymap.h @@ -0,0 +1,554 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ba +// variant: unicodeus + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(LSHIFT(Key_D))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_S))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ć', LSHIFT(Key_Quote)) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', Key_Quote) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', LSHIFT(Key_Semicolon)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Semicolon) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_RightBracket)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_RightBracket) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Š', LSHIFT(Key_LeftBracket)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_LeftBracket) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ž', LSHIFT(Key_Y)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_Y) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'DŽ', RALT(LSHIFT(Key_X))) \ + OP(L'Dž', LSHIFT(Key_X)) \ + OP(L'dž', Key_X) \ + OP(L'LJ', RALT(LSHIFT(Key_Q))) \ + OP(L'Lj', LSHIFT(Key_Q)) \ + OP(L'lj', Key_Q) \ + OP(L'NJ', RALT(LSHIFT(Key_W))) \ + OP(L'Nj', LSHIFT(Key_W)) \ + OP(L'nj', Key_W) \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_D)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_S)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, Key_Quote) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ccaron, Key_Semicolon) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_S)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_D)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_LeftBracket) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ba { +namespace unicodeus { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace unicodeus +} // namespace ba +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ba/us/keymap.h b/src/kaleidoscope/host_keymap/linux/ba/us/keymap.h new file mode 100644 index 0000000000..1a859291cd --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ba/us/keymap.h @@ -0,0 +1,571 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ba +// variant: us + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(LSHIFT(Key_D))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_S))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ć', LSHIFT(Key_Quote)) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', Key_Quote) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', LSHIFT(Key_Semicolon)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Semicolon) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_RightBracket)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_RightBracket) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Š', LSHIFT(Key_LeftBracket)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_LeftBracket) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ž', LSHIFT(Key_NonUsPound)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_NonUsPound) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_D)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_S)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, Key_Quote) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ccaron, Key_Semicolon) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_S)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_D)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_LeftBracket) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, Key_NonUsPound) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ba { +namespace us { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace us +} // namespace ba +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/bd/probhat/keymap.h b/src/kaleidoscope/host_keymap/linux/bd/probhat/keymap.h new file mode 100644 index 0000000000..d76056c0d1 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/bd/probhat/keymap.h @@ -0,0 +1,324 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: bd +// variant: probhat + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'।', Key_Period) \ + OP(L'॥', LSHIFT(Key_NonUsPound)) \ + OP(L'ঁ', LSHIFT(Key_Period)) \ + OP(L'ং', LSHIFT(Key_L)) \ + OP(L'ঃ', LSHIFT(Key_H)) \ + OP(L'অ', LSHIFT(Key_A)) \ + OP(L'আ', Key_V) \ + OP(L'ই', LSHIFT(Key_I)) \ + OP(L'ঈ', LSHIFT(Key_E)) \ + OP(L'উ', LSHIFT(Key_U)) \ + OP(L'ঊ', LSHIFT(Key_W)) \ + OP(L'ঋ', LSHIFT(Key_V)) \ + OP(L'এ', Key_Y) \ + OP(L'ঐ', LSHIFT(Key_Y)) \ + OP(L'ও', Key_O) \ + OP(L'ঔ', LSHIFT(Key_O)) \ + OP(L'ক', Key_K) \ + OP(L'খ', LSHIFT(Key_K)) \ + OP(L'গ', Key_G) \ + OP(L'ঘ', LSHIFT(Key_G)) \ + OP(L'ঙ', LSHIFT(Key_M)) \ + OP(L'চ', Key_C) \ + OP(L'ছ', LSHIFT(Key_C)) \ + OP(L'জ', Key_J) \ + OP(L'ঝ', LSHIFT(Key_J)) \ + OP(L'ঞ', LSHIFT(Key_7)) \ + OP(L'ট', Key_T) \ + OP(L'ঠ', LSHIFT(Key_T)) \ + OP(L'ড', Key_D) \ + OP(L'ঢ', LSHIFT(Key_D)) \ + OP(L'ণ', LSHIFT(Key_N)) \ + OP(L'ত', Key_F) \ + OP(L'থ', LSHIFT(Key_F)) \ + OP(L'দ', Key_Q) \ + OP(L'ধ', LSHIFT(Key_Q)) \ + OP(L'ন', Key_N) \ + OP(L'প', Key_P) \ + OP(L'ফ', LSHIFT(Key_P)) \ + OP(L'ব', Key_B) \ + OP(L'ভ', LSHIFT(Key_B)) \ + OP(L'ম', Key_M) \ + OP(L'য', LSHIFT(Key_Z)) \ + OP(L'র', Key_R) \ + OP(L'ল', Key_L) \ + OP(L'শ', Key_X) \ + OP(L'ষ', LSHIFT(Key_S)) \ + OP(L'স', Key_S) \ + OP(L'হ', Key_H) \ + OP(L'া', Key_A) \ + OP(L'ি', Key_I) \ + OP(L'ী', Key_E) \ + OP(L'ু', Key_U) \ + OP(L'ূ', Key_W) \ + OP(L'ৃ', LSHIFT(Key_Comma)) \ + OP(L'ে', Key_LeftBracket) \ + OP(L'ৈ', LSHIFT(Key_LeftBracket)) \ + OP(L'ো', Key_RightBracket) \ + OP(L'ৌ', LSHIFT(Key_RightBracket)) \ + OP(L'্', Key_Slash) \ + OP(L'ৎ', LSHIFT(Key_8)) \ + OP(L'ড়', LSHIFT(Key_R)) \ + OP(L'ঢ়', LSHIFT(Key_X)) \ + OP(L'য়', Key_Z) \ + OP(L'০', Key_0) \ + OP(L'১', Key_1) \ + OP(L'২', Key_2) \ + OP(L'৩', Key_3) \ + OP(L'৪', Key_4) \ + OP(L'৫', Key_5) \ + OP(L'৬', Key_6) \ + OP(L'৭', Key_7) \ + OP(L'৮', Key_8) \ + OP(L'৯', Key_9) \ + OP(L'৳', LSHIFT(Key_4)) \ + OP(L'‌', Key_NonUsPound) \ + OP(L'‍', Key_Backtick) \ + OP(L'₹', RALT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace bd { +namespace probhat { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace probhat +} // namespace bd +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/bd/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/bd/standard/keymap.h new file mode 100644 index 0000000000..cb119ae60f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/bd/standard/keymap.h @@ -0,0 +1,372 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: bd +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ं', RALT(Key_7)) \ + OP(L'।', LSHIFT(Key_G)) \ + OP(L'॥', RALT(Key_G)) \ + OP(L'ঁ', Key_Z) \ + OP(L'ং', LSHIFT(Key_Q)) \ + OP(L'ঃ', LSHIFT(Key_Z)) \ + OP(L'অ', LSHIFT(Key_H)) \ + OP(L'আ', RALT(Key_H)) \ + OP(L'ই', RALT(Key_D)) \ + OP(L'ঈ', RALT(LSHIFT(Key_D))) \ + OP(L'উ', RALT(Key_S)) \ + OP(L'ঊ', RALT(LSHIFT(Key_S))) \ + OP(L'ঋ', RALT(Key_A)) \ + OP(L'ঌ', RALT(Key_L)) \ + OP(L'এ', RALT(Key_C)) \ + OP(L'ঐ', RALT(LSHIFT(Key_C))) \ + OP(L'ও', RALT(Key_X)) \ + OP(L'ঔ', RALT(LSHIFT(Key_X))) \ + OP(L'ক', Key_J) \ + OP(L'খ', LSHIFT(Key_J)) \ + OP(L'গ', Key_O) \ + OP(L'ঘ', LSHIFT(Key_O)) \ + OP(L'ঙ', Key_Q) \ + OP(L'চ', Key_Y) \ + OP(L'ছ', LSHIFT(Key_Y)) \ + OP(L'জ', Key_U) \ + OP(L'ঝ', LSHIFT(Key_U)) \ + OP(L'ঞ', LSHIFT(Key_I)) \ + OP(L'ট', Key_T) \ + OP(L'ঠ', LSHIFT(Key_T)) \ + OP(L'ড', Key_E) \ + OP(L'ঢ', LSHIFT(Key_E)) \ + OP(L'ণ', LSHIFT(Key_B)) \ + OP(L'ত', Key_K) \ + OP(L'থ', LSHIFT(Key_K)) \ + OP(L'দ', Key_L) \ + OP(L'ধ', LSHIFT(Key_L)) \ + OP(L'ন', Key_B) \ + OP(L'প', Key_R) \ + OP(L'ফ', LSHIFT(Key_R)) \ + OP(L'ব', Key_F) \ + OP(L'ভ', LSHIFT(Key_F)) \ + OP(L'ম', Key_M) \ + OP(L'য', Key_W) \ + OP(L'র', Key_V) \ + OP(L'ল', LSHIFT(Key_V)) \ + OP(L'঳', RALT(LSHIFT(Key_6))) \ + OP(L'শ', LSHIFT(Key_M)) \ + OP(L'ষ', LSHIFT(Key_N)) \ + OP(L'স', Key_N) \ + OP(L'হ', Key_I) \ + OP(L'঻', RALT(Key_J)) \ + OP(L'়', RALT(Key_Period)) \ + OP(L'ঽ', RALT(Key_I)) \ + OP(L'া', Key_H) \ + OP(L'ি', Key_D) \ + OP(L'ী', LSHIFT(Key_D)) \ + OP(L'ু', Key_S) \ + OP(L'ূ', LSHIFT(Key_S)) \ + OP(L'ৃ', Key_A) \ + OP(L'ৄ', RALT(Key_E)) \ + OP(L'ে', Key_C) \ + OP(L'ৈ', LSHIFT(Key_C)) \ + OP(L'ো', Key_X) \ + OP(L'ৌ', LSHIFT(Key_X)) \ + OP(L'্', Key_G) \ + OP(L'ৎ', RALT(Key_K)) \ + OP(L'ৗ', LSHIFT(Key_A)) \ + OP(L'ড়', Key_P) \ + OP(L'ঢ়', LSHIFT(Key_P)) \ + OP(L'য়', LSHIFT(Key_W)) \ + OP(L'ৠ', RALT(LSHIFT(Key_A))) \ + OP(L'ৡ', RALT(LSHIFT(Key_L))) \ + OP(L'ৢ', RALT(Key_Q)) \ + OP(L'ৣ', RALT(LSHIFT(Key_Q))) \ + OP(L'০', Key_0) \ + OP(L'১', Key_1) \ + OP(L'২', Key_2) \ + OP(L'৩', Key_3) \ + OP(L'৪', Key_4) \ + OP(L'৫', Key_5) \ + OP(L'৬', Key_6) \ + OP(L'৭', Key_7) \ + OP(L'৮', Key_8) \ + OP(L'৯', Key_9) \ + OP(L'ৰ', RALT(Key_F)) \ + OP(L'ৱ', RALT(LSHIFT(Key_F))) \ + OP(L'৲', RALT(LSHIFT(Key_4))) \ + OP(L'৳', RALT(Key_4)) \ + OP(L'৴', RALT(Key_1)) \ + OP(L'৵', RALT(Key_2)) \ + OP(L'৶', RALT(Key_3)) \ + OP(L'৷', RALT(Key_5)) \ + OP(L'৸', RALT(Key_6)) \ + OP(L'৹', RALT(Key_0)) \ + OP(L'৺', RALT(Key_Z)) \ + OP(L'‌', RALT(Key_Minus)) \ + OP(L'‍', RALT(Key_Equals)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace bd { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace bd +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/be/iso-alternate/keymap.h b/src/kaleidoscope/host_keymap/linux/be/iso-alternate/keymap.h new file mode 100644 index 0000000000..0be44d161c --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/be/iso-alternate/keymap.h @@ -0,0 +1,577 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: be +// variant: iso-alternate + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_8) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Slash) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_8) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Slash) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_NonUsPound)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', Key_6) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_W)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', LSHIFT(Key_Backtick)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', Key_NonUsPound) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_Semicolon))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_Q))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'æ', RALT(Key_Q)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_A))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_ae, RALT(Key_Q)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Quote)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_M))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Slash)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Slash) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, Key_8) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_W)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, Key_NonUsPound) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_6) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace be { +namespace iso_alternate { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace iso_alternate +} // namespace be +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/be/nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/be/nodeadkeys/keymap.h new file mode 100644 index 0000000000..d9db561f03 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/be/nodeadkeys/keymap.h @@ -0,0 +1,582 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: be +// variant: nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_8) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Slash) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_LeftBracket) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_Slash)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_8) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Slash) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_LeftBracket) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_Slash)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_NonUsPound)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', Key_6) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', LSHIFT(Key_LeftBracket)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_RightBracket))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', LSHIFT(Key_Backtick)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Semicolon)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', Key_NonUsPound) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¸', RALT(Key_Equals)) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'˛', RALT(LSHIFT(Key_Equals))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_Semicolon))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_acute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_LeftBracket) \ + OP(XKB_KEY_asciitilde, RALT(Key_Slash)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cedilla, RALT(Key_Equals)) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_diaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Slash) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, Key_8) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_NonUsPound)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, Key_NonUsPound) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_6) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace be { +namespace nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace nodeadkeys +} // namespace be +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/be/oss/keymap.h b/src/kaleidoscope/host_keymap/linux/be/oss/keymap.h new file mode 100644 index 0000000000..56bcb48f2d --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/be/oss/keymap.h @@ -0,0 +1,630 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: be +// variant: oss + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_8) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Slash) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_9)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_8)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_8) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Slash) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_9)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_8)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(LSHIFT(Key_8))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_E))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_NonUsPound)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_G))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', Key_6) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_N)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_C))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Equals))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', LSHIFT(Key_Backtick)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', Key_NonUsPound) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¹', RALT(Key_Backtick)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_M)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', RALT(LSHIFT(Key_0))) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Â', RALT(LSHIFT(Key_W))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ä', RALT(LSHIFT(Key_A))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_Q))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_9))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', RALT(LSHIFT(Key_7))) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'É', RALT(LSHIFT(Key_2))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ê', RALT(LSHIFT(Key_R))) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Ë', RALT(LSHIFT(Key_D))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ï', RALT(LSHIFT(Key_K))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_H))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ô', RALT(LSHIFT(Key_P))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', RALT(LSHIFT(Key_Semicolon))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_Minus))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ù', RALT(LSHIFT(Key_Quote))) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'Û', RALT(LSHIFT(Key_U))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', RALT(LSHIFT(Key_J))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'â', RALT(Key_W)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_Q)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ê', RALT(Key_R)) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'ë', RALT(Key_D)) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ï', RALT(Key_K)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_H)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ô', RALT(Key_P)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', RALT(Key_Semicolon)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_Period)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_Minus)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'û', RALT(Key_U)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', RALT(Key_J)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ÿ', RALT(Key_Y)) /* U+00ff, XKB_KEY_ydiaeresis, LATIN SMALL LETTER Y WITH DIAERESIS */ \ + OP(L'Ŀ', RALT(LSHIFT(Key_L))) \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ÿ', RALT(LSHIFT(Key_Y))) /* U+0178, XKB_KEY_Ydiaeresis, LATIN CAPITAL LETTER Y WITH DIAERESIS */ \ + OP(L'‑', RALT(Key_Equals)) \ + OP(L'–', RALT(LSHIFT(Key_5))) \ + OP(L'—', RALT(LSHIFT(Key_4))) \ + OP(L'‘', RALT(Key_F)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_G)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_F))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_Z))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_X))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_S))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(LSHIFT(Key_M))) \ + OP(L' ', RALT(Key_V)) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_6))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'←', RALT(Key_Keypad4)) \ + OP(L'↑', RALT(Key_Keypad8)) \ + OP(L'→', RALT(Key_Keypad6)) \ + OP(L'↓', RALT(Key_B)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'↔', RALT(Key_Keypad5)) \ + OP(L'↕', RALT(Key_Keypad0)) \ + OP(L'↖', RALT(Key_Keypad7)) \ + OP(L'↗', RALT(Key_Keypad9)) \ + OP(L'↘', RALT(Key_Keypad3)) \ + OP(L'↙', RALT(Key_Keypad1)) \ + OP(L'⇐', RALT(LSHIFT(Key_Keypad4))) \ + OP(L'⇑', RALT(LSHIFT(Key_Keypad8))) \ + OP(L'⇒', RALT(LSHIFT(Key_Keypad6))) \ + OP(L'⇓', RALT(LSHIFT(Key_Keypad2))) \ + OP(L'⇔', RALT(LSHIFT(Key_Keypad5))) \ + OP(L'⇕', RALT(LSHIFT(Key_Keypad0))) \ + OP(L'⇖', RALT(LSHIFT(Key_Keypad7))) \ + OP(L'⇗', RALT(LSHIFT(Key_Keypad9))) \ + OP(L'⇘', RALT(LSHIFT(Key_Keypad3))) \ + OP(L'⇙', RALT(LSHIFT(Key_Keypad1))) \ + OP(L'−', RALT(Key_KeypadSubtract)) \ + OP(L'∕', LSHIFT(Key_KeypadDivide)) \ + OP(L'≠', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'≤', RALT(LSHIFT(Key_Backtick))) /* U+2264, XKB_KEY_lessthanequal, LESS-THAN OR EQUAL TO */ \ + OP(L'≥', RALT(LSHIFT(Key_1))) /* U+2265, XKB_KEY_greaterthanequal, GREATER-THAN OR EQUAL TO */ \ + OP(L'⋅', LSHIFT(Key_KeypadMultiply)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Agrave, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_H))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Ecircumflex, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Egrave, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Ugrave, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Ydiaeresis, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_acircumflex, RALT(Key_W)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ae, RALT(Key_Q)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(Key_8)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_9)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Quote)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_5)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_4)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_stroke, RALT(Key_L)) /* XKB_KEY_dead_stroke */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Slash)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(Key_Period)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_downarrow, RALT(Key_B)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_ecircumflex, RALT(Key_R)) \ + OP(XKB_KEY_ediaeresis, RALT(Key_D)) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_equal, Key_Slash) \ + OP(XKB_KEY_eth, RALT(Key_H)) \ + OP(XKB_KEY_exclam, Key_8) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_greaterthanequal, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_idiaeresis, RALT(Key_K)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_F)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lessthanequal, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, Key_NonUsPound) \ + OP(XKB_KEY_multiply, RALT(Key_Comma)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Spacebar))) \ + OP(XKB_KEY_notequal, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_notsign, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, RALT(Key_P)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_Semicolon)) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_onesuperior, RALT(Key_Backtick)) \ + OP(XKB_KEY_oslash, RALT(Key_Minus)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_rightarrow, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_G)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_6) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threesuperior, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, RALT(Key_U)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_J)) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_ydiaeresis, RALT(Key_Y)) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace be { +namespace oss { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace oss +} // namespace be +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/be/oss_latin9/keymap.h b/src/kaleidoscope/host_keymap/linux/be/oss_latin9/keymap.h new file mode 100644 index 0000000000..230fc191ca --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/be/oss_latin9/keymap.h @@ -0,0 +1,575 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: be +// variant: oss_latin9 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_8) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Slash) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_9)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_8)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_8) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Slash) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_9)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_8)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_V)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(LSHIFT(Key_8))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_E))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_NonUsPound)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_G))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', Key_6) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_N)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_C))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Equals))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', LSHIFT(Key_Backtick)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', Key_NonUsPound) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'·', RALT(Key_KeypadMultiply)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_Backtick)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_M)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', RALT(LSHIFT(Key_0))) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Â', RALT(LSHIFT(Key_W))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ä', RALT(LSHIFT(Key_A))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_Q))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_9))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', RALT(LSHIFT(Key_7))) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'É', RALT(LSHIFT(Key_2))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ê', RALT(LSHIFT(Key_R))) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Ë', RALT(LSHIFT(Key_D))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ï', RALT(LSHIFT(Key_K))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_H))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ô', RALT(LSHIFT(Key_P))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', RALT(LSHIFT(Key_Semicolon))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_Minus))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ù', RALT(LSHIFT(Key_Quote))) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'Û', RALT(LSHIFT(Key_U))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', RALT(LSHIFT(Key_J))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'â', RALT(Key_W)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_Q)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ê', RALT(Key_R)) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'ë', RALT(Key_D)) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ï', RALT(Key_K)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_H)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ô', RALT(Key_P)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', RALT(Key_Semicolon)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_Period)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_Minus)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'û', RALT(Key_U)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', RALT(Key_J)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ÿ', RALT(Key_Y)) /* U+00ff, XKB_KEY_ydiaeresis, LATIN SMALL LETTER Y WITH DIAERESIS */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ÿ', RALT(LSHIFT(Key_Y))) /* U+0178, XKB_KEY_Ydiaeresis, LATIN CAPITAL LETTER Y WITH DIAERESIS */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Agrave, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_H))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Ecircumflex, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Egrave, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Ugrave, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Ydiaeresis, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_acircumflex, RALT(Key_W)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ae, RALT(Key_Q)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(Key_8)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_9)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Quote)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(Key_5)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_4)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Slash)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(Key_Period)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_ecircumflex, RALT(Key_R)) \ + OP(XKB_KEY_ediaeresis, RALT(Key_D)) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_equal, Key_Slash) \ + OP(XKB_KEY_eth, RALT(Key_H)) \ + OP(XKB_KEY_exclam, Key_8) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_idiaeresis, RALT(Key_K)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, Key_NonUsPound) \ + OP(XKB_KEY_multiply, RALT(Key_Comma)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_V)) \ + OP(XKB_KEY_notsign, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, RALT(Key_P)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_Semicolon)) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_onesuperior, RALT(Key_Backtick)) \ + OP(XKB_KEY_oslash, RALT(Key_Minus)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_periodcentered, RALT(Key_KeypadMultiply)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_6) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threesuperior, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, RALT(Key_U)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_J)) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_ydiaeresis, RALT(Key_Y)) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace be { +namespace oss_latin9 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace oss_latin9 +} // namespace be +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/be/oss_sundeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/be/oss_sundeadkeys/keymap.h new file mode 100644 index 0000000000..cb688b1de7 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/be/oss_sundeadkeys/keymap.h @@ -0,0 +1,630 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: be +// variant: oss_sundeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_8) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Slash) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_9)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_8)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_8) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Slash) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_9)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_8)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(LSHIFT(Key_8))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_E))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_NonUsPound)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_G))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', Key_6) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_N)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_C))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Equals))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', LSHIFT(Key_Backtick)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', Key_NonUsPound) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¹', RALT(Key_Backtick)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_M)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', RALT(LSHIFT(Key_0))) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Â', RALT(LSHIFT(Key_W))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ä', RALT(LSHIFT(Key_A))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_Q))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_9))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', RALT(LSHIFT(Key_7))) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'É', RALT(LSHIFT(Key_2))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ê', RALT(LSHIFT(Key_R))) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Ë', RALT(LSHIFT(Key_D))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ï', RALT(LSHIFT(Key_K))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_H))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ô', RALT(LSHIFT(Key_P))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', RALT(LSHIFT(Key_Semicolon))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_Minus))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ù', RALT(LSHIFT(Key_Quote))) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'Û', RALT(LSHIFT(Key_U))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', RALT(LSHIFT(Key_J))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'â', RALT(Key_W)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_Q)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ê', RALT(Key_R)) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'ë', RALT(Key_D)) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ï', RALT(Key_K)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_H)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ô', RALT(Key_P)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', RALT(Key_Semicolon)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_Period)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_Minus)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'û', RALT(Key_U)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', RALT(Key_J)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ÿ', RALT(Key_Y)) /* U+00ff, XKB_KEY_ydiaeresis, LATIN SMALL LETTER Y WITH DIAERESIS */ \ + OP(L'Ŀ', RALT(LSHIFT(Key_L))) \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ÿ', RALT(LSHIFT(Key_Y))) /* U+0178, XKB_KEY_Ydiaeresis, LATIN CAPITAL LETTER Y WITH DIAERESIS */ \ + OP(L'‑', RALT(Key_Equals)) \ + OP(L'–', RALT(LSHIFT(Key_5))) \ + OP(L'—', RALT(LSHIFT(Key_4))) \ + OP(L'‘', RALT(Key_F)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_G)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_F))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_Z))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_X))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_S))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(LSHIFT(Key_M))) \ + OP(L' ', RALT(Key_V)) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_6))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'←', RALT(Key_Keypad4)) \ + OP(L'↑', RALT(Key_Keypad8)) \ + OP(L'→', RALT(Key_Keypad6)) \ + OP(L'↓', RALT(Key_B)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'↔', RALT(Key_Keypad5)) \ + OP(L'↕', RALT(Key_Keypad0)) \ + OP(L'↖', RALT(Key_Keypad7)) \ + OP(L'↗', RALT(Key_Keypad9)) \ + OP(L'↘', RALT(Key_Keypad3)) \ + OP(L'↙', RALT(Key_Keypad1)) \ + OP(L'⇐', RALT(LSHIFT(Key_Keypad4))) \ + OP(L'⇑', RALT(LSHIFT(Key_Keypad8))) \ + OP(L'⇒', RALT(LSHIFT(Key_Keypad6))) \ + OP(L'⇓', RALT(LSHIFT(Key_Keypad2))) \ + OP(L'⇔', RALT(LSHIFT(Key_Keypad5))) \ + OP(L'⇕', RALT(LSHIFT(Key_Keypad0))) \ + OP(L'⇖', RALT(LSHIFT(Key_Keypad7))) \ + OP(L'⇗', RALT(LSHIFT(Key_Keypad9))) \ + OP(L'⇘', RALT(LSHIFT(Key_Keypad3))) \ + OP(L'⇙', RALT(LSHIFT(Key_Keypad1))) \ + OP(L'−', RALT(Key_KeypadSubtract)) \ + OP(L'∕', LSHIFT(Key_KeypadDivide)) \ + OP(L'≠', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'≤', RALT(LSHIFT(Key_Backtick))) /* U+2264, XKB_KEY_lessthanequal, LESS-THAN OR EQUAL TO */ \ + OP(L'≥', RALT(LSHIFT(Key_1))) /* U+2265, XKB_KEY_greaterthanequal, GREATER-THAN OR EQUAL TO */ \ + OP(L'⋅', LSHIFT(Key_KeypadMultiply)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Agrave, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_H))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Ecircumflex, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Egrave, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Ugrave, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Ydiaeresis, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_acircumflex, RALT(Key_W)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ae, RALT(Key_Q)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(Key_8)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_9)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Quote)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_5)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_4)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_stroke, RALT(Key_L)) /* XKB_KEY_dead_stroke */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Slash)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(Key_Period)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_downarrow, RALT(Key_B)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_ecircumflex, RALT(Key_R)) \ + OP(XKB_KEY_ediaeresis, RALT(Key_D)) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_equal, Key_Slash) \ + OP(XKB_KEY_eth, RALT(Key_H)) \ + OP(XKB_KEY_exclam, Key_8) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_greaterthanequal, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_idiaeresis, RALT(Key_K)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_F)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lessthanequal, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, Key_NonUsPound) \ + OP(XKB_KEY_multiply, RALT(Key_Comma)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Spacebar))) \ + OP(XKB_KEY_notequal, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_notsign, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, RALT(Key_P)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_Semicolon)) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_onesuperior, RALT(Key_Backtick)) \ + OP(XKB_KEY_oslash, RALT(Key_Minus)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_rightarrow, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_G)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_6) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threesuperior, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, RALT(Key_U)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_J)) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_ydiaeresis, RALT(Key_Y)) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace be { +namespace oss_sundeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace oss_sundeadkeys +} // namespace be +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/be/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/be/standard/keymap.h new file mode 100644 index 0000000000..70ff28babd --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/be/standard/keymap.h @@ -0,0 +1,577 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: be +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_8) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Slash) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_8) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Slash) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_NonUsPound)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', Key_6) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', LSHIFT(Key_Backtick)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', Key_NonUsPound) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Slash)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Slash) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, Key_8) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, Key_NonUsPound) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_6) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace be { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace be +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/be/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/be/sun_type6/keymap.h new file mode 100644 index 0000000000..ae35bb7e31 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/be/sun_type6/keymap.h @@ -0,0 +1,463 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: be +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_8) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Slash) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_9)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_8) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Slash) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_9)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', LSHIFT(Key_NonUsPound)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_6) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', LSHIFT(Key_Backtick)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', Key_NonUsPound) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_9)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, RALT(Key_Quote)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Slash)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_equal, Key_Slash) \ + OP(XKB_KEY_exclam, Key_8) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, Key_NonUsPound) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_6) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threesuperior, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace be { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace be +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/be/sundeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/be/sundeadkeys/keymap.h new file mode 100644 index 0000000000..ab8583853c --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/be/sundeadkeys/keymap.h @@ -0,0 +1,571 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: be +// variant: sundeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_8) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Slash) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_8) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Slash) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_NonUsPound)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', Key_6) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', LSHIFT(Key_Backtick)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', Key_NonUsPound) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Slash)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Slash) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, Key_8) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, Key_NonUsPound) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_6) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace be { +namespace sundeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sundeadkeys +} // namespace be +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/be/wang/keymap.h b/src/kaleidoscope/host_keymap/linux/be/wang/keymap.h new file mode 100644 index 0000000000..87eabcff3d --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/be/wang/keymap.h @@ -0,0 +1,582 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: be +// variant: wang + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_8) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Slash) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Keypad8)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_8) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Slash) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Keypad8)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_NonUsPound)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_6) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', LSHIFT(Key_Backtick)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', Key_NonUsPound) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Slash)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Slash) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, Key_8) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, RALT(Key_Keypad8)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, Key_NonUsPound) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_6) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace be { +namespace wang { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace wang +} // namespace be +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/bg/bas_phonetic/keymap.h b/src/kaleidoscope/host_keymap/linux/bg/bas_phonetic/keymap.h new file mode 100644 index 0000000000..7a1b4eebe9 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/bg/bas_phonetic/keymap.h @@ -0,0 +1,373 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: bg +// variant: bas_phonetic + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'§', LSHIFT(Key_7)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'Ѝ', LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_V)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_G)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_X)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Z)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_I)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_J)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_H)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_C)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_Q)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_W)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_RightBracket)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_Y)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ю', LSHIFT(Key_Backtick)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_LeftBracket)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_V) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_G) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_X) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Z) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_I) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_J) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_H) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_C) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_Q) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_W) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_RightBracket) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_Y) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ь', Key_NonUsPound) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'ю', Key_Backtick) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_LeftBracket) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ѝ', Key_NonUsBackslashAndPipe) \ + OP(L'–', LSHIFT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'“', LSHIFT(Key_Period)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', LSHIFT(Key_Comma)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', LSHIFT(Key_6)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'№', LSHIFT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_Q) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_G) \ + OP(XKB_KEY_Cyrillic_ha, Key_H) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_Y) \ + OP(XKB_KEY_Cyrillic_i, Key_I) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_W) \ + OP(XKB_KEY_Cyrillic_shcha, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_shorti, Key_J) \ + OP(XKB_KEY_Cyrillic_softsign, Key_NonUsPound) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_C) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_ve, Key_V) \ + OP(XKB_KEY_Cyrillic_ya, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_yu, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ze, Key_Z) \ + OP(XKB_KEY_Cyrillic_zhe, Key_X) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, LSHIFT(Key_6)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_endash, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_leftdoublequotemark, LSHIFT(Key_Period)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_section, LSHIFT(Key_7)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace bg { +namespace bas_phonetic { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace bas_phonetic +} // namespace bg +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/bg/phonetic/keymap.h b/src/kaleidoscope/host_keymap/linux/bg/phonetic/keymap.h new file mode 100644 index 0000000000..dc3f04f459 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/bg/phonetic/keymap.h @@ -0,0 +1,373 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: bg +// variant: phonetic + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'§', LSHIFT(Key_7)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'Ѝ', LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_W)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_G)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_V)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Z)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_I)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_J)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_H)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_C)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_Backtick)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_LeftBracket)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_RightBracket)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_Y)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ю', LSHIFT(Key_NonUsPound)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Q)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_W) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_G) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_V) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Z) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_I) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_J) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_H) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_C) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_Backtick) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_LeftBracket) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_RightBracket) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_Y) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ь', Key_X) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'ю', Key_NonUsPound) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Q) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ѝ', Key_NonUsBackslashAndPipe) \ + OP(L'–', LSHIFT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'“', LSHIFT(Key_Period)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', LSHIFT(Key_Comma)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', LSHIFT(Key_6)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'№', LSHIFT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_G) \ + OP(XKB_KEY_Cyrillic_ha, Key_H) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_Y) \ + OP(XKB_KEY_Cyrillic_i, Key_I) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_shcha, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_shorti, Key_J) \ + OP(XKB_KEY_Cyrillic_softsign, Key_X) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_C) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_ve, Key_W) \ + OP(XKB_KEY_Cyrillic_ya, Key_Q) \ + OP(XKB_KEY_Cyrillic_yu, Key_NonUsPound) \ + OP(XKB_KEY_Cyrillic_ze, Key_Z) \ + OP(XKB_KEY_Cyrillic_zhe, Key_V) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, LSHIFT(Key_6)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_endash, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_leftdoublequotemark, LSHIFT(Key_Period)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_section, LSHIFT(Key_7)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace bg { +namespace phonetic { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace phonetic +} // namespace bg +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/bg/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/bg/standard/keymap.h new file mode 100644 index 0000000000..b6865f5ba8 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/bg/standard/keymap.h @@ -0,0 +1,372 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: bg +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_4)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('$', LSHIFT(Key_Minus)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', Key_Backtick) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_Backtick)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Q) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Equals) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_7)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_RightBracket) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', LSHIFT(Key_6)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_2)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_4)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'$', LSHIFT(Key_Minus)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', Key_Backtick) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_Backtick)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Q) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Equals) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_7)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_RightBracket) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', LSHIFT(Key_6)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_2)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'§', LSHIFT(Key_RightBracket)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'Ѝ', LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(L'А', LSHIFT(Key_D)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Slash)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_L)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_H)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_O)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_G)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_R)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_X)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_U)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_Period)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_Semicolon)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_K)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_F)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_M)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_Comma)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_I)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_J)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_W)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_B)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_N)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_LeftBracket)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_Quote)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_T)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_Y)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_C)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Э', LSHIFT(Key_V)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Z)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_S)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_D) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Slash) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_L) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_H) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_O) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_G) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_R) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_X) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_U) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_Period) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_Semicolon) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_K) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_F) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_M) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_Comma) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_I) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_J) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_W) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_B) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_N) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_LeftBracket) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_Quote) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_T) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_Y) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_C) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', LSHIFT(Key_Q)) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_A) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_V) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Z) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_S) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ѝ', Key_NonUsBackslashAndPipe) \ + OP(L'–', LSHIFT(Key_9)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'“', LSHIFT(Key_NonUsPound)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', Key_NonUsPound) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', LSHIFT(Key_Equals)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'№', LSHIFT(Key_0)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_a, Key_D) \ + OP(XKB_KEY_Cyrillic_be, Key_Slash) \ + OP(XKB_KEY_Cyrillic_che, Key_Quote) \ + OP(XKB_KEY_Cyrillic_de, Key_O) \ + OP(XKB_KEY_Cyrillic_e, Key_V) \ + OP(XKB_KEY_Cyrillic_ef, Key_B) \ + OP(XKB_KEY_Cyrillic_el, Key_Period) \ + OP(XKB_KEY_Cyrillic_em, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_en, Key_K) \ + OP(XKB_KEY_Cyrillic_er, Key_Comma) \ + OP(XKB_KEY_Cyrillic_es, Key_I) \ + OP(XKB_KEY_Cyrillic_ghe, Key_H) \ + OP(XKB_KEY_Cyrillic_ha, Key_N) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_C) \ + OP(XKB_KEY_Cyrillic_i, Key_R) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_ka, Key_U) \ + OP(XKB_KEY_Cyrillic_o, Key_F) \ + OP(XKB_KEY_Cyrillic_pe, Key_M) \ + OP(XKB_KEY_Cyrillic_sha, Key_T) \ + OP(XKB_KEY_Cyrillic_shcha, Key_Y) \ + OP(XKB_KEY_Cyrillic_shorti, Key_X) \ + OP(XKB_KEY_Cyrillic_softsign, Key_A) \ + OP(XKB_KEY_Cyrillic_te, Key_J) \ + OP(XKB_KEY_Cyrillic_tse, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_u, Key_W) \ + OP(XKB_KEY_Cyrillic_ve, Key_L) \ + OP(XKB_KEY_Cyrillic_ya, Key_S) \ + OP(XKB_KEY_Cyrillic_yeru, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_yu, Key_Z) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_G) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_colon, LSHIFT(Key_7)) \ + OP(XKB_KEY_comma, Key_Q) \ + OP(XKB_KEY_dollar, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_doublelowquotemark, Key_NonUsPound) \ + OP(XKB_KEY_endash, LSHIFT(Key_9)) \ + OP(XKB_KEY_equal, LSHIFT(Key_6)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_leftdoublequotemark, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenleft, Key_Backtick) \ + OP(XKB_KEY_parenright, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Equals) \ + OP(XKB_KEY_plus, LSHIFT(Key_3)) \ + OP(XKB_KEY_question, LSHIFT(Key_2)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_4)) \ + OP(XKB_KEY_section, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_semicolon, Key_RightBracket) \ + OP(XKB_KEY_slash, LSHIFT(Key_8)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace bg { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace bg +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/br/dvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/br/dvorak/keymap.h new file mode 100644 index 0000000000..88e4d8591e --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/br/dvorak/keymap.h @@ -0,0 +1,599 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: br +// variant: dvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Backtick)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_NonUsPound) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Q) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_W)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Q)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_Quote))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_NonUsPound)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(LSHIFT(Key_LeftBracket))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_Quote)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Backtick)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_NonUsPound) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Q) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_W)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Q)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_Quote))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_NonUsPound)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(LSHIFT(Key_LeftBracket))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_Quote)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_5)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_4)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(Key_T)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', RALT(Key_RightBracket)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_6))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_I))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_Minus)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_V)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_O)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Q)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_RightBracket))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_LeftBracket)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(LSHIFT(Key_M))) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_J))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_E))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(Key_Equals)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_N)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(LSHIFT(Key_2))) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_3))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Q))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_H))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(Key_B)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_F))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_R))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Semicolon)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_NonUsBackslashAndPipe) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_H)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_B))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_F)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_R)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'İ', RALT(LSHIFT(Key_G))) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'ı', RALT(Key_G)) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_P))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_P)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_L))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_L)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_S))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_S)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ŭ', RALT(LSHIFT(Key_Comma))) /* U+016c, XKB_KEY_Ubreve, LATIN CAPITAL LETTER U WITH BREVE */ \ + OP(L'ŭ', RALT(Key_Comma)) /* U+016d, XKB_KEY_ubreve, LATIN SMALL LETTER U WITH BREVE */ \ + OP(L'Ə', RALT(LSHIFT(Key_X))) /* U+018f, XKB_KEY_SCHWA, LATIN CAPITAL LETTER SCHWA */ \ + OP(L'Ʒ', RALT(LSHIFT(Key_C))) /* U+01b7, XKB_KEY_EZH, LATIN CAPITAL LETTER EZH */ \ + OP(L'ə', RALT(Key_X)) /* U+0259, XKB_KEY_schwa, LATIN SMALL LETTER SCHWA */ \ + OP(L'ʒ', RALT(Key_C)) /* U+0292, XKB_KEY_ezh, LATIN SMALL LETTER EZH */ \ + OP(L'̓', RALT(LSHIFT(Key_W))) \ + OP(L'̦', RALT(LSHIFT(Key_Minus))) \ + OP(L'̩', RALT(Key_W)) \ + OP(L'̭', RALT(LSHIFT(Key_Z))) \ + OP(L'̱', RALT(Key_Z)) \ + OP(L'̶', RALT(LSHIFT(Key_NonUsPound))) \ + OP(L'―', RALT(Key_NonUsPound)) \ + OP(L'‘', RALT(LSHIFT(Key_Y))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_U))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_Period))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'‛', RALT(LSHIFT(Key_Slash))) \ + OP(L'“', RALT(Key_Y)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_U)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_Period)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'‟', RALT(Key_Slash)) \ + OP(L'•', RALT(Key_E)) \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'‹', RALT(LSHIFT(Key_V))) \ + OP(L'›', RALT(LSHIFT(Key_N))) \ + OP(L'€', RALT(Key_D)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_K))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'←', RALT(Key_J)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(Key_I)) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_K)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_M)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_H))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_EZH, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_D)) \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_SCHWA, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_R))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Ubreve, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Backtick) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_asciitilde, RALT(Key_Quote)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, Key_Minus) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_ccedilla, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_cent, RALT(Key_5)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Z)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_LeftBracket) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_7)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_Backtick)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_9)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_6)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_9))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_0)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_8)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, Key_Quote) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_Q)) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_Period)) \ + OP(XKB_KEY_downarrow, RALT(Key_M)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_eng, RALT(Key_L)) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_eth, RALT(Key_H)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ezh, RALT(Key_C)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_V)) \ + OP(XKB_KEY_guillemotright, RALT(Key_N)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_idotless, RALT(Key_G)) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_leftarrow, RALT(Key_J)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_Y)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_less, LSHIFT(Key_W)) \ + OP(XKB_KEY_lstroke, RALT(Key_P)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(Key_Equals)) \ + OP(XKB_KEY_minus, Key_NonUsPound) \ + OP(XKB_KEY_mu, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_multiply, RALT(Key_B)) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_oe, RALT(Key_S)) \ + OP(XKB_KEY_onehalf, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(Key_Minus)) \ + OP(XKB_KEY_oslash, RALT(Key_F)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_plus, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_Q)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_registered, RALT(Key_O)) \ + OP(XKB_KEY_rightarrow, RALT(Key_K)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_U)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_schwa, RALT(Key_X)) \ + OP(XKB_KEY_section, RALT(Key_RightBracket)) \ + OP(XKB_KEY_semicolon, Key_Z) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_slash, Key_Q) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Semicolon)) \ + OP(XKB_KEY_sterling, RALT(Key_4)) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_thorn, RALT(Key_R)) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_ubreve, RALT(Key_Comma)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_uparrow, RALT(Key_I)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_yen, RALT(Key_T)) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace br { +namespace dvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak +} // namespace br +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/br/nativo-epo/keymap.h b/src/kaleidoscope/host_keymap/linux/br/nativo-epo/keymap.h new file mode 100644 index 0000000000..20c1aaf1fb --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/br/nativo-epo/keymap.h @@ -0,0 +1,593 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: br +// variant: nativo-epo + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_NonUsPound)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_RightBracket) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Q) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_NonUsBackslashAndPipe) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_W)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Backtick) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Q)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_D)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_V)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_O)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_J)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_S)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Period)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_Comma)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_R)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_A)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_B)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_H)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_Semicolon)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_F)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_N))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_L)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_K)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_I)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_M)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', RALT(LSHIFT(Key_Y))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', RALT(LSHIFT(Key_T))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', RALT(LSHIFT(Key_Z))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_LeftBracket))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_RightBracket)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(LSHIFT(Key_Quote))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_D) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_V) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_O) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_J) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_S) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Period) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_Comma) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_R) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_A) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_B) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_H) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_Semicolon) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_F) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', RALT(Key_N)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_L) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_K) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_I) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_M) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', RALT(Key_Y)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', RALT(Key_T)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', RALT(Key_Z)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_LeftBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_NonUsPound)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_RightBracket) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Q) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_NonUsBackslashAndPipe) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_W)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Backtick) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Q)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_D)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_V)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_O)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_J)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_S)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Period)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_Comma)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_R)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_A)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_B)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_H)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_Semicolon)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_F)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_N))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_L)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_K)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_I)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_M)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', RALT(LSHIFT(Key_Y))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', RALT(LSHIFT(Key_T))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', RALT(LSHIFT(Key_Z))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_LeftBracket))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_RightBracket)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(LSHIFT(Key_Quote))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_D) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_V) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_O) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_J) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_S) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Period) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_Comma) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_R) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_A) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_B) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_H) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_Semicolon) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_F) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', RALT(Key_N)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_L) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_K) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_I) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_M) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', RALT(Key_Y)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', RALT(Key_T)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', RALT(Key_Z)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_LeftBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_5)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_4)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'§', RALT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_6))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_O)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_Minus)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_V)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_L)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Q)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Backtick))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Quote)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_H)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_E))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(Key_Equals)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_B)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(LSHIFT(Key_2))) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_3))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Q))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_D))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_X))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_J))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ø', RALT(LSHIFT(Key_G))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_K)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_D)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_X)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_J)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ø', RALT(Key_G)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ĉ', LSHIFT(Key_T)) /* U+0108, XKB_KEY_Ccircumflex, LATIN CAPITAL LETTER C WITH CIRCUMFLEX */ \ + OP(L'ĉ', Key_T) /* U+0109, XKB_KEY_ccircumflex, LATIN SMALL LETTER C WITH CIRCUMFLEX */ \ + OP(L'Ĝ', LSHIFT(Key_N)) /* U+011c, XKB_KEY_Gcircumflex, LATIN CAPITAL LETTER G WITH CIRCUMFLEX */ \ + OP(L'ĝ', Key_N) /* U+011d, XKB_KEY_gcircumflex, LATIN SMALL LETTER G WITH CIRCUMFLEX */ \ + OP(L'Ĥ', RALT(LSHIFT(Key_R))) /* U+0124, XKB_KEY_Hcircumflex, LATIN CAPITAL LETTER H WITH CIRCUMFLEX */ \ + OP(L'ĥ', RALT(Key_R)) /* U+0125, XKB_KEY_hcircumflex, LATIN SMALL LETTER H WITH CIRCUMFLEX */ \ + OP(L'İ', RALT(LSHIFT(Key_A))) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'ı', RALT(Key_A)) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ĵ', LSHIFT(Key_Z)) /* U+0134, XKB_KEY_Jcircumflex, LATIN CAPITAL LETTER J WITH CIRCUMFLEX */ \ + OP(L'ĵ', Key_Z) /* U+0135, XKB_KEY_jcircumflex, LATIN SMALL LETTER J WITH CIRCUMFLEX */ \ + OP(L'Ł', RALT(LSHIFT(Key_U))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_U)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_Semicolon))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_Semicolon)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_F))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_F)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ŝ', LSHIFT(Key_X)) /* U+015c, XKB_KEY_Scircumflex, LATIN CAPITAL LETTER S WITH CIRCUMFLEX */ \ + OP(L'ŝ', Key_X) /* U+015d, XKB_KEY_scircumflex, LATIN SMALL LETTER S WITH CIRCUMFLEX */ \ + OP(L'Ŭ', LSHIFT(Key_Y)) /* U+016c, XKB_KEY_Ubreve, LATIN CAPITAL LETTER U WITH BREVE */ \ + OP(L'ŭ', Key_Y) /* U+016d, XKB_KEY_ubreve, LATIN SMALL LETTER U WITH BREVE */ \ + OP(L'Ʒ', RALT(LSHIFT(Key_C))) /* U+01b7, XKB_KEY_EZH, LATIN CAPITAL LETTER EZH */ \ + OP(L'ʒ', RALT(Key_C)) /* U+0292, XKB_KEY_ezh, LATIN SMALL LETTER EZH */ \ + OP(L'̓', RALT(LSHIFT(Key_W))) \ + OP(L'̦', RALT(LSHIFT(Key_Minus))) \ + OP(L'̩', RALT(Key_W)) \ + OP(L'̭', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(L'̱', RALT(Key_NonUsBackslashAndPipe)) \ + OP(L'̶', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'―', RALT(Key_RightBracket)) \ + OP(L'‘', RALT(LSHIFT(Key_Comma))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_Period))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_M))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'‛', RALT(LSHIFT(Key_Slash))) \ + OP(L'“', RALT(Key_Comma)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_Period)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_M)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'‟', RALT(Key_Slash)) \ + OP(L'•', RALT(Key_E)) \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'‹', RALT(LSHIFT(Key_V))) \ + OP(L'›', RALT(LSHIFT(Key_B))) \ + OP(L'€', RALT(Key_S)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(Key_I)) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_D)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_V)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_O)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_Ccircumflex, LSHIFT(Key_T)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_J)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_S)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_J))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_EZH, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_S)) \ + OP(XKB_KEY_F, LSHIFT(Key_Period)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Gcircumflex, LSHIFT(Key_N)) \ + OP(XKB_KEY_H, LSHIFT(Key_R)) \ + OP(XKB_KEY_Hcircumflex, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_A)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_Jcircumflex, LSHIFT(Key_Z)) \ + OP(XKB_KEY_K, LSHIFT(Key_B)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_U)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_M, LSHIFT(Key_H)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_F)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_R, LSHIFT(Key_L)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_K)) \ + OP(XKB_KEY_Scircumflex, LSHIFT(Key_X)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_I)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_G)) \ + OP(XKB_KEY_Ubreve, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_M)) \ + OP(XKB_KEY_W, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_X, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_D) \ + OP(XKB_KEY_acute, RALT(Key_Quote)) \ + OP(XKB_KEY_ae, RALT(Key_D)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_asciitilde, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_V) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, Key_Minus) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_c, Key_O) \ + OP(XKB_KEY_ccedilla, RALT(Key_X)) \ + OP(XKB_KEY_ccircumflex, Key_T) \ + OP(XKB_KEY_cent, RALT(Key_5)) \ + OP(XKB_KEY_colon, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_copyright, RALT(Key_O)) \ + OP(XKB_KEY_d, Key_J) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_7)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_NonUsPound)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_9)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_6)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Quote)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_9))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_0)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_8)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, Key_LeftBracket) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_Q)) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_M)) \ + OP(XKB_KEY_e, Key_S) \ + OP(XKB_KEY_eng, RALT(Key_Semicolon)) \ + OP(XKB_KEY_equal, Key_Backtick) \ + OP(XKB_KEY_eth, RALT(Key_J)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ezh, RALT(Key_C)) \ + OP(XKB_KEY_f, Key_Period) \ + OP(XKB_KEY_g, Key_Comma) \ + OP(XKB_KEY_gcircumflex, Key_N) \ + OP(XKB_KEY_grave, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_V)) \ + OP(XKB_KEY_guillemotright, RALT(Key_B)) \ + OP(XKB_KEY_h, Key_R) \ + OP(XKB_KEY_hcircumflex, RALT(Key_R)) \ + OP(XKB_KEY_i, Key_A) \ + OP(XKB_KEY_idotless, RALT(Key_A)) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_jcircumflex, Key_Z) \ + OP(XKB_KEY_k, Key_B) \ + OP(XKB_KEY_l, Key_U) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_Comma)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_less, LSHIFT(Key_W)) \ + OP(XKB_KEY_lstroke, RALT(Key_U)) \ + OP(XKB_KEY_m, Key_H) \ + OP(XKB_KEY_masculine, RALT(Key_Equals)) \ + OP(XKB_KEY_minus, Key_RightBracket) \ + OP(XKB_KEY_mu, RALT(Key_H)) \ + OP(XKB_KEY_n, Key_Semicolon) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_F) \ + OP(XKB_KEY_oe, RALT(Key_F)) \ + OP(XKB_KEY_onehalf, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(Key_Minus)) \ + OP(XKB_KEY_oslash, RALT(Key_G)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_plus, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_q, RALT(Key_N)) \ + OP(XKB_KEY_question, LSHIFT(Key_Q)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_r, Key_L) \ + OP(XKB_KEY_registered, RALT(Key_L)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_Period)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_s, Key_K) \ + OP(XKB_KEY_scircumflex, Key_X) \ + OP(XKB_KEY_section, RALT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_slash, Key_Q) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_K)) \ + OP(XKB_KEY_sterling, RALT(Key_4)) \ + OP(XKB_KEY_t, Key_I) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(Key_I)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_G) \ + OP(XKB_KEY_ubreve, Key_Y) \ + OP(XKB_KEY_underscore, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_v, Key_M) \ + OP(XKB_KEY_w, RALT(Key_Y)) \ + OP(XKB_KEY_x, RALT(Key_T)) \ + OP(XKB_KEY_y, RALT(Key_Z)) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace br { +namespace nativo_epo { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace nativo_epo +} // namespace br +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/br/nativo-us/keymap.h b/src/kaleidoscope/host_keymap/linux/br/nativo-us/keymap.h new file mode 100644 index 0000000000..ec1e047608 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/br/nativo-us/keymap.h @@ -0,0 +1,589 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: br +// variant: nativo-us + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_NonUsPound)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_RightBracket) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Q) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_X)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_X) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_W)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Backtick) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Q)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_D)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_V)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_O)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_J)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_S)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Period)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_Comma)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_R)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_A)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_B)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_H)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_Semicolon)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_F)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_N)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_L)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_K)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_I)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_M)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Y)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_T)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_X)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_LeftBracket))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_RightBracket)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(LSHIFT(Key_Quote))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_D) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_V) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_O) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_J) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_S) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Period) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_Comma) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_R) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_A) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_B) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_H) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_Semicolon) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_F) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_N) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_L) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_K) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_I) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_M) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Y) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_T) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(LSHIFT(Key_X))) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_LeftBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_NonUsPound)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_RightBracket) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Q) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_X)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_X) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_W)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Backtick) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Q)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_D)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_V)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_O)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_J)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_S)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Period)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_Comma)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_R)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_A)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_B)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_H)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_Semicolon)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_F)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_N)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_L)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_K)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_I)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_M)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Y)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_T)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_X)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_LeftBracket))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_RightBracket)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(LSHIFT(Key_Quote))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_D) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_V) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_O) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_J) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_S) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Period) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_Comma) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_R) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_A) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_B) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_H) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_Semicolon) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_F) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_N) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_L) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_K) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_I) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_M) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Y) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_T) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(LSHIFT(Key_X))) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_LeftBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_5)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_4)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'§', RALT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_6))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_O)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_Minus)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_V)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_L)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Q)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Backtick))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Quote)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_H)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_E))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(Key_Equals)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_B)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(LSHIFT(Key_2))) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_3))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Q))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_D))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_Z))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_J))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(Key_T)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_G))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_K)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_D)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_Z)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_J)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_T))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_G)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'İ', RALT(LSHIFT(Key_A))) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'ı', RALT(Key_A)) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_U))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_U)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_Semicolon))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_Semicolon)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_F))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_F)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ŭ', RALT(LSHIFT(Key_Y))) /* U+016c, XKB_KEY_Ubreve, LATIN CAPITAL LETTER U WITH BREVE */ \ + OP(L'ŭ', RALT(Key_Y)) /* U+016d, XKB_KEY_ubreve, LATIN SMALL LETTER U WITH BREVE */ \ + OP(L'Ə', RALT(LSHIFT(Key_N))) /* U+018f, XKB_KEY_SCHWA, LATIN CAPITAL LETTER SCHWA */ \ + OP(L'Ʒ', RALT(LSHIFT(Key_C))) /* U+01b7, XKB_KEY_EZH, LATIN CAPITAL LETTER EZH */ \ + OP(L'ə', RALT(Key_N)) /* U+0259, XKB_KEY_schwa, LATIN SMALL LETTER SCHWA */ \ + OP(L'ʒ', RALT(Key_C)) /* U+0292, XKB_KEY_ezh, LATIN SMALL LETTER EZH */ \ + OP(L'̓', RALT(LSHIFT(Key_W))) \ + OP(L'̦', RALT(LSHIFT(Key_Minus))) \ + OP(L'̩', RALT(Key_W)) \ + OP(L'̭', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(L'̱', RALT(Key_NonUsBackslashAndPipe)) \ + OP(L'̶', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'―', RALT(Key_RightBracket)) \ + OP(L'‘', RALT(LSHIFT(Key_Comma))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_Period))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_M))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'‛', RALT(LSHIFT(Key_Slash))) \ + OP(L'“', RALT(Key_Comma)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_Period)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_M)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'‟', RALT(Key_Slash)) \ + OP(L'•', RALT(Key_E)) \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'‹', RALT(LSHIFT(Key_V))) \ + OP(L'›', RALT(LSHIFT(Key_B))) \ + OP(L'€', RALT(Key_S)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(Key_I)) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_D)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_V)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_O)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_J)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_S)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_J))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_EZH, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_S)) \ + OP(XKB_KEY_F, LSHIFT(Key_Period)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_H, LSHIFT(Key_R)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_A)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_B)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_U)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_M, LSHIFT(Key_H)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_F)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_N)) \ + OP(XKB_KEY_R, LSHIFT(Key_L)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_K)) \ + OP(XKB_KEY_SCHWA, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_I)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_G)) \ + OP(XKB_KEY_Ubreve, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_M)) \ + OP(XKB_KEY_W, LSHIFT(Key_Y)) \ + OP(XKB_KEY_X, LSHIFT(Key_T)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_D) \ + OP(XKB_KEY_acute, RALT(Key_Quote)) \ + OP(XKB_KEY_ae, RALT(Key_D)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_asciitilde, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_V) \ + OP(XKB_KEY_backslash, RALT(Key_X)) \ + OP(XKB_KEY_bar, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, Key_Minus) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_c, Key_O) \ + OP(XKB_KEY_ccedilla, RALT(Key_Z)) \ + OP(XKB_KEY_cent, RALT(Key_5)) \ + OP(XKB_KEY_colon, LSHIFT(Key_X)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_copyright, RALT(Key_O)) \ + OP(XKB_KEY_d, Key_J) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_7)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_NonUsPound)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_9)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_6)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Quote)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_9))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_0)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_8)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, Key_LeftBracket) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_Q)) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_M)) \ + OP(XKB_KEY_e, Key_S) \ + OP(XKB_KEY_eng, RALT(Key_Semicolon)) \ + OP(XKB_KEY_equal, Key_Backtick) \ + OP(XKB_KEY_eth, RALT(Key_J)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ezh, RALT(Key_C)) \ + OP(XKB_KEY_f, Key_Period) \ + OP(XKB_KEY_g, Key_Comma) \ + OP(XKB_KEY_grave, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_V)) \ + OP(XKB_KEY_guillemotright, RALT(Key_B)) \ + OP(XKB_KEY_h, Key_R) \ + OP(XKB_KEY_i, Key_A) \ + OP(XKB_KEY_idotless, RALT(Key_A)) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_B) \ + OP(XKB_KEY_l, Key_U) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_Comma)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_less, LSHIFT(Key_W)) \ + OP(XKB_KEY_lstroke, RALT(Key_U)) \ + OP(XKB_KEY_m, Key_H) \ + OP(XKB_KEY_masculine, RALT(Key_Equals)) \ + OP(XKB_KEY_minus, Key_RightBracket) \ + OP(XKB_KEY_mu, RALT(Key_H)) \ + OP(XKB_KEY_multiply, RALT(Key_T)) \ + OP(XKB_KEY_n, Key_Semicolon) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_F) \ + OP(XKB_KEY_oe, RALT(Key_F)) \ + OP(XKB_KEY_onehalf, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(Key_Minus)) \ + OP(XKB_KEY_oslash, RALT(Key_G)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_plus, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_q, Key_N) \ + OP(XKB_KEY_question, LSHIFT(Key_Q)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_r, Key_L) \ + OP(XKB_KEY_registered, RALT(Key_L)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_Period)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_s, Key_K) \ + OP(XKB_KEY_schwa, RALT(Key_N)) \ + OP(XKB_KEY_section, RALT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, Key_X) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_slash, Key_Q) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_K)) \ + OP(XKB_KEY_sterling, RALT(Key_4)) \ + OP(XKB_KEY_t, Key_I) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(Key_I)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_G) \ + OP(XKB_KEY_ubreve, RALT(Key_Y)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_v, Key_M) \ + OP(XKB_KEY_w, Key_Y) \ + OP(XKB_KEY_x, Key_T) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace br { +namespace nativo_us { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace nativo_us +} // namespace br +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/br/nativo/keymap.h b/src/kaleidoscope/host_keymap/linux/br/nativo/keymap.h new file mode 100644 index 0000000000..2d190c4f85 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/br/nativo/keymap.h @@ -0,0 +1,591 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: br +// variant: nativo + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_NonUsPound)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_RightBracket) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Q) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_NonUsBackslashAndPipe) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_W)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Backtick) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Q)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_D)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_V)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_O)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_J)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_S)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Period)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_Comma)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_R)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_A)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_B)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_H)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_Semicolon)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_F)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_N)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_L)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_K)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_I)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_M)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Y)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_T)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_X)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_LeftBracket))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_RightBracket)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(LSHIFT(Key_Quote))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_D) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_V) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_O) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_J) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_S) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Period) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_Comma) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_R) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_A) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_B) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_H) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_Semicolon) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_F) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_N) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_L) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_K) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_I) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_M) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Y) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_T) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(LSHIFT(Key_X))) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_LeftBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_NonUsPound)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_RightBracket) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Q) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_NonUsBackslashAndPipe) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_W)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Backtick) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Q)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_D)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_V)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_O)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_J)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_S)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Period)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_Comma)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_R)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_A)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_B)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_H)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_Semicolon)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_F)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_N)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_L)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_K)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_I)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_M)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Y)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_T)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_X)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_LeftBracket))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_RightBracket)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(LSHIFT(Key_Quote))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_D) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_V) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_O) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_J) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_S) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Period) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_Comma) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_R) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_A) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_B) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_H) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_Semicolon) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_F) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_N) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_L) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_K) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_I) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_M) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Y) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_T) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(LSHIFT(Key_X))) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_LeftBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_5)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_4)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(Key_Z)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', RALT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_6))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_O)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_Minus)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_V)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_L)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Q)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Backtick))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Quote)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_H)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_E))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(Key_Equals)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_B)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(LSHIFT(Key_2))) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_3))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Q))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_D))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_X)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_J))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(Key_T)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_G))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_K)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_D)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_X) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_J)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_T))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_G)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'İ', RALT(LSHIFT(Key_A))) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'ı', RALT(Key_A)) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_U))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_U)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_Semicolon))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_Semicolon)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_F))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_F)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ŭ', RALT(LSHIFT(Key_Y))) /* U+016c, XKB_KEY_Ubreve, LATIN CAPITAL LETTER U WITH BREVE */ \ + OP(L'ŭ', RALT(Key_Y)) /* U+016d, XKB_KEY_ubreve, LATIN SMALL LETTER U WITH BREVE */ \ + OP(L'Ə', RALT(LSHIFT(Key_N))) /* U+018f, XKB_KEY_SCHWA, LATIN CAPITAL LETTER SCHWA */ \ + OP(L'Ʒ', RALT(LSHIFT(Key_C))) /* U+01b7, XKB_KEY_EZH, LATIN CAPITAL LETTER EZH */ \ + OP(L'ə', RALT(Key_N)) /* U+0259, XKB_KEY_schwa, LATIN SMALL LETTER SCHWA */ \ + OP(L'ʒ', RALT(Key_C)) /* U+0292, XKB_KEY_ezh, LATIN SMALL LETTER EZH */ \ + OP(L'̓', RALT(LSHIFT(Key_W))) \ + OP(L'̦', RALT(LSHIFT(Key_Minus))) \ + OP(L'̩', RALT(Key_W)) \ + OP(L'̭', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(L'̱', RALT(Key_NonUsBackslashAndPipe)) \ + OP(L'̶', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'―', RALT(Key_RightBracket)) \ + OP(L'‘', RALT(LSHIFT(Key_Comma))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_Period))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_M))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'‛', RALT(LSHIFT(Key_Slash))) \ + OP(L'“', RALT(Key_Comma)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_Period)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_M)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'‟', RALT(Key_Slash)) \ + OP(L'•', RALT(Key_E)) \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'‹', RALT(LSHIFT(Key_V))) \ + OP(L'›', RALT(LSHIFT(Key_B))) \ + OP(L'€', RALT(Key_S)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(Key_I)) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_D)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_V)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_O)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_X)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_J)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_S)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_J))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_EZH, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_S)) \ + OP(XKB_KEY_F, LSHIFT(Key_Period)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_H, LSHIFT(Key_R)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_A)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_B)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_U)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_M, LSHIFT(Key_H)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_F)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_N)) \ + OP(XKB_KEY_R, LSHIFT(Key_L)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_K)) \ + OP(XKB_KEY_SCHWA, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_I)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_G)) \ + OP(XKB_KEY_Ubreve, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_M)) \ + OP(XKB_KEY_W, LSHIFT(Key_Y)) \ + OP(XKB_KEY_X, LSHIFT(Key_T)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_D) \ + OP(XKB_KEY_acute, RALT(Key_Quote)) \ + OP(XKB_KEY_ae, RALT(Key_D)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_asciitilde, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_V) \ + OP(XKB_KEY_backslash, RALT(Key_X)) \ + OP(XKB_KEY_bar, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, Key_Minus) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_c, Key_O) \ + OP(XKB_KEY_ccedilla, Key_X) \ + OP(XKB_KEY_cent, RALT(Key_5)) \ + OP(XKB_KEY_colon, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_copyright, RALT(Key_O)) \ + OP(XKB_KEY_d, Key_J) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_7)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_NonUsPound)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_9)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_6)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Quote)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_9))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_0)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_8)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, Key_LeftBracket) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_Q)) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_M)) \ + OP(XKB_KEY_e, Key_S) \ + OP(XKB_KEY_eng, RALT(Key_Semicolon)) \ + OP(XKB_KEY_equal, Key_Backtick) \ + OP(XKB_KEY_eth, RALT(Key_J)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ezh, RALT(Key_C)) \ + OP(XKB_KEY_f, Key_Period) \ + OP(XKB_KEY_g, Key_Comma) \ + OP(XKB_KEY_grave, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_V)) \ + OP(XKB_KEY_guillemotright, RALT(Key_B)) \ + OP(XKB_KEY_h, Key_R) \ + OP(XKB_KEY_i, Key_A) \ + OP(XKB_KEY_idotless, RALT(Key_A)) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_B) \ + OP(XKB_KEY_l, Key_U) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_Comma)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_less, LSHIFT(Key_W)) \ + OP(XKB_KEY_lstroke, RALT(Key_U)) \ + OP(XKB_KEY_m, Key_H) \ + OP(XKB_KEY_masculine, RALT(Key_Equals)) \ + OP(XKB_KEY_minus, Key_RightBracket) \ + OP(XKB_KEY_mu, RALT(Key_H)) \ + OP(XKB_KEY_multiply, RALT(Key_T)) \ + OP(XKB_KEY_n, Key_Semicolon) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_F) \ + OP(XKB_KEY_oe, RALT(Key_F)) \ + OP(XKB_KEY_onehalf, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(Key_Minus)) \ + OP(XKB_KEY_oslash, RALT(Key_G)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_plus, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_q, Key_N) \ + OP(XKB_KEY_question, LSHIFT(Key_Q)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_r, Key_L) \ + OP(XKB_KEY_registered, RALT(Key_L)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_Period)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_s, Key_K) \ + OP(XKB_KEY_schwa, RALT(Key_N)) \ + OP(XKB_KEY_section, RALT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_slash, Key_Q) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_K)) \ + OP(XKB_KEY_sterling, RALT(Key_4)) \ + OP(XKB_KEY_t, Key_I) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(Key_I)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_G) \ + OP(XKB_KEY_ubreve, RALT(Key_Y)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_v, Key_M) \ + OP(XKB_KEY_w, Key_Y) \ + OP(XKB_KEY_x, Key_T) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(Key_Z)) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace br { +namespace nativo { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace nativo +} // namespace br +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/br/nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/br/nodeadkeys/keymap.h new file mode 100644 index 0000000000..e98c77eb9b --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/br/nodeadkeys/keymap.h @@ -0,0 +1,572 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: br +// variant: nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Backtick)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_LeftBracket) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Slash) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', RALT(Key_W)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_Quote)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_LeftBracket)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', Key_Quote) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Backtick)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_LeftBracket) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Slash) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', RALT(Key_W)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_Quote)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_LeftBracket)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', Key_Quote) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_5)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_4)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', RALT(Key_Equals)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', LSHIFT(Key_6)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_RightBracket)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_LeftBracket)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(Key_NonUsPound)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(LSHIFT(Key_2))) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_3))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_Semicolon)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_Semicolon) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'˙', RALT(LSHIFT(Key_Slash))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˝', RALT(LSHIFT(Key_Semicolon))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_acute, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_LeftBracket) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_asciitilde, Key_Quote) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_RightBracket) \ + OP(XKB_KEY_bracketright, Key_NonUsPound) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_Semicolon) \ + OP(XKB_KEY_cent, RALT(Key_5)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_diaeresis, LSHIFT(Key_6)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_LeftBracket)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_onehalf, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(Key_RightBracket)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, RALT(Key_W)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_Equals)) \ + OP(XKB_KEY_semicolon, Key_Slash) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, RALT(Key_Q)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_4)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace br { +namespace nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace nodeadkeys +} // namespace br +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/br/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/br/standard/keymap.h new file mode 100644 index 0000000000..df72496632 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/br/standard/keymap.h @@ -0,0 +1,575 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: br +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Backtick)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Slash) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', RALT(Key_W)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_Quote))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(LSHIFT(Key_LeftBracket))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_Quote)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Backtick)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Slash) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', RALT(Key_W)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_Quote))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(LSHIFT(Key_LeftBracket))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_Quote)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_5)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_4)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', RALT(Key_Equals)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_6))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_RightBracket)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_LeftBracket)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(Key_NonUsPound)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(LSHIFT(Key_2))) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_3))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_Semicolon)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_Semicolon) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Backtick) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_asciitilde, RALT(Key_Quote)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_RightBracket) \ + OP(XKB_KEY_bracketright, Key_NonUsPound) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_Semicolon) \ + OP(XKB_KEY_cent, RALT(Key_5)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, Key_LeftBracket) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_6)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, Key_Quote) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_onehalf, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(Key_RightBracket)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, RALT(Key_W)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_Equals)) \ + OP(XKB_KEY_semicolon, Key_Slash) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, RALT(Key_Q)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_4)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace br { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace br +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/br/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/br/sun_type6/keymap.h new file mode 100644 index 0000000000..db0e824bf3 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/br/sun_type6/keymap.h @@ -0,0 +1,494 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: br +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Backtick)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Slash) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', RALT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_Quote))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(LSHIFT(Key_LeftBracket))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_Quote)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Backtick)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Slash) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', RALT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_Quote))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(LSHIFT(Key_LeftBracket))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_Quote)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_Semicolon)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_5)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_4)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_Equals)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_6))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_RightBracket)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_NonUsBackslashAndPipe)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_LeftBracket)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(Key_NonUsPound)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(LSHIFT(Key_2))) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_3))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(Key_Period)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ç', LSHIFT(Key_Semicolon)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'ç', Key_Semicolon) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Backtick) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_asciitilde, RALT(Key_Quote)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_RightBracket) \ + OP(XKB_KEY_bracketright, Key_NonUsPound) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_Semicolon) \ + OP(XKB_KEY_cent, RALT(Key_5)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, Key_LeftBracket) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_6)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, Key_Quote) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_Semicolon)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_onehalf, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(Key_RightBracket)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, RALT(Key_Comma)) \ + OP(XKB_KEY_questiondown, RALT(Key_Period)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_Equals)) \ + OP(XKB_KEY_semicolon, Key_Slash) \ + OP(XKB_KEY_slash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_4)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace br { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace br +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/br/thinkpad/keymap.h b/src/kaleidoscope/host_keymap/linux/br/thinkpad/keymap.h new file mode 100644 index 0000000000..903a296029 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/br/thinkpad/keymap.h @@ -0,0 +1,574 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: br +// variant: thinkpad + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Backtick)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_RightControl) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Slash) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', RALT(Key_W)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_Quote))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(LSHIFT(Key_LeftBracket))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_Quote)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Backtick)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_RightControl) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Slash) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', RALT(Key_W)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_Quote))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(LSHIFT(Key_LeftBracket))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_Quote)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_5)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_4)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', RALT(Key_Equals)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_6))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_RightBracket)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_RightControl)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_LeftBracket)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(Key_NonUsPound)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(LSHIFT(Key_2))) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_3))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_Semicolon)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_Semicolon) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Backtick) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_asciitilde, RALT(Key_Quote)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_RightBracket) \ + OP(XKB_KEY_bracketright, Key_NonUsPound) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_Semicolon) \ + OP(XKB_KEY_cent, RALT(Key_5)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, Key_LeftBracket) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_6)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, Key_Quote) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_RightControl)) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_onehalf, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(Key_RightBracket)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, RALT(Key_W)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_Equals)) \ + OP(XKB_KEY_semicolon, Key_Slash) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_RightControl) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_4)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace br { +namespace thinkpad { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace thinkpad +} // namespace br +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/brai/left_hand/keymap.h b/src/kaleidoscope/host_keymap/linux/brai/left_hand/keymap.h new file mode 100644 index 0000000000..74c1f98d06 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/brai/left_hand/keymap.h @@ -0,0 +1,200 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: brai +// variant: left_hand + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', LSHIFT(Key_KeypadAdd)) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', LSHIFT(Key_KeypadAdd)) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, LSHIFT(Key_KeypadAdd)) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braille_dot_1, Key_D) /* XKB_KEY_braille_dot_1 */ \ + OP(XKB_KEY_braille_dot_2, Key_S) /* XKB_KEY_braille_dot_2 */ \ + OP(XKB_KEY_braille_dot_3, Key_A) /* XKB_KEY_braille_dot_3 */ \ + OP(XKB_KEY_braille_dot_4, Key_F) /* XKB_KEY_braille_dot_4 */ \ + OP(XKB_KEY_braille_dot_5, Key_B) /* XKB_KEY_braille_dot_5 */ \ + OP(XKB_KEY_braille_dot_6, Key_V) /* XKB_KEY_braille_dot_6 */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace brai { +namespace left_hand { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace left_hand +} // namespace brai +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/brai/right_hand/keymap.h b/src/kaleidoscope/host_keymap/linux/brai/right_hand/keymap.h new file mode 100644 index 0000000000..df55d54d60 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/brai/right_hand/keymap.h @@ -0,0 +1,200 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: brai +// variant: right_hand + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', LSHIFT(Key_KeypadAdd)) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', LSHIFT(Key_KeypadAdd)) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, LSHIFT(Key_KeypadAdd)) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braille_dot_1, Key_J) /* XKB_KEY_braille_dot_1 */ \ + OP(XKB_KEY_braille_dot_2, Key_B) /* XKB_KEY_braille_dot_2 */ \ + OP(XKB_KEY_braille_dot_3, Key_N) /* XKB_KEY_braille_dot_3 */ \ + OP(XKB_KEY_braille_dot_4, Key_K) /* XKB_KEY_braille_dot_4 */ \ + OP(XKB_KEY_braille_dot_5, Key_L) /* XKB_KEY_braille_dot_5 */ \ + OP(XKB_KEY_braille_dot_6, Key_Semicolon) /* XKB_KEY_braille_dot_6 */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace brai { +namespace right_hand { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace right_hand +} // namespace brai +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/brai/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/brai/standard/keymap.h new file mode 100644 index 0000000000..a076503c72 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/brai/standard/keymap.h @@ -0,0 +1,204 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: brai +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', LSHIFT(Key_KeypadAdd)) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', LSHIFT(Key_KeypadAdd)) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, LSHIFT(Key_KeypadAdd)) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braille_dot_1, Key_F) /* XKB_KEY_braille_dot_1 */ \ + OP(XKB_KEY_braille_dot_10, Key_N) /* XKB_KEY_braille_dot_10 */ \ + OP(XKB_KEY_braille_dot_2, Key_D) /* XKB_KEY_braille_dot_2 */ \ + OP(XKB_KEY_braille_dot_3, Key_S) /* XKB_KEY_braille_dot_3 */ \ + OP(XKB_KEY_braille_dot_4, Key_J) /* XKB_KEY_braille_dot_4 */ \ + OP(XKB_KEY_braille_dot_5, Key_K) /* XKB_KEY_braille_dot_5 */ \ + OP(XKB_KEY_braille_dot_6, Key_L) /* XKB_KEY_braille_dot_6 */ \ + OP(XKB_KEY_braille_dot_7, Key_A) /* XKB_KEY_braille_dot_7 */ \ + OP(XKB_KEY_braille_dot_8, Key_Semicolon) /* XKB_KEY_braille_dot_8 */ \ + OP(XKB_KEY_braille_dot_9, Key_V) /* XKB_KEY_braille_dot_9 */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace brai { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace brai +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/bt/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/bt/standard/keymap.h new file mode 100644 index 0000000000..9425f7366f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/bt/standard/keymap.h @@ -0,0 +1,417 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: bt +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', LSHIFT(Key_Spacebar)) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', RALT(LSHIFT(Key_1))) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(LSHIFT(Key_3))) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(LSHIFT(Key_4))) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(LSHIFT(Key_5))) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(LSHIFT(Key_7))) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', RALT(LSHIFT(Key_9))) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', RALT(LSHIFT(Key_0))) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', RALT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', RALT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', RALT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(LSHIFT(Key_Semicolon))) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(LSHIFT(Key_Comma))) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', RALT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(LSHIFT(Key_Period))) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', RALT(LSHIFT(Key_Slash))) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(LSHIFT(Key_2))) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', RALT(LSHIFT(Key_Minus))) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', LSHIFT(Key_Spacebar)) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', RALT(LSHIFT(Key_1))) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(LSHIFT(Key_3))) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(LSHIFT(Key_4))) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(LSHIFT(Key_5))) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(LSHIFT(Key_7))) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', RALT(LSHIFT(Key_9))) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', RALT(LSHIFT(Key_0))) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', RALT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', RALT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', RALT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(LSHIFT(Key_Semicolon))) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(LSHIFT(Key_Comma))) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', RALT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(LSHIFT(Key_Period))) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', RALT(LSHIFT(Key_Slash))) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(LSHIFT(Key_2))) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', RALT(LSHIFT(Key_Minus))) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'«', RALT(LSHIFT(Key_G))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', RALT(LSHIFT(Key_H))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'༁', RALT(LSHIFT(Key_6))) \ + OP(L'༃', RALT(Key_C)) \ + OP(L'༄', LSHIFT(Key_1)) \ + OP(L'༅', LSHIFT(Key_2)) \ + OP(L'༆', LSHIFT(Key_3)) \ + OP(L'༈', LSHIFT(Key_6)) \ + OP(L'༉', Key_Backtick) \ + OP(L'༊', LSHIFT(Key_Backtick)) \ + OP(L'་', Key_Spacebar) \ + OP(L'༌', RALT(Key_Spacebar)) \ + OP(L'།', Key_Equals) \ + OP(L'༏', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(L'༐', RALT(Key_NonUsBackslashAndPipe)) \ + OP(L'༑', LSHIFT(Key_Equals)) \ + OP(L'༒', RALT(Key_V)) \ + OP(L'༓', RALT(Key_Z)) \ + OP(L'༔', Key_Minus) \ + OP(L'༗', RALT(LSHIFT(Key_I))) \ + OP(L'༘', RALT(LSHIFT(Key_O))) \ + OP(L'༙', RALT(LSHIFT(Key_P))) \ + OP(L'༚', RALT(Key_T)) \ + OP(L'༛', RALT(Key_Y)) \ + OP(L'༜', RALT(Key_U)) \ + OP(L'༝', RALT(Key_I)) \ + OP(L'༞', RALT(Key_O)) \ + OP(L'༟', RALT(Key_P)) \ + OP(L'༠', Key_0) \ + OP(L'༡', Key_1) \ + OP(L'༢', Key_2) \ + OP(L'༣', Key_3) \ + OP(L'༤', Key_4) \ + OP(L'༥', Key_5) \ + OP(L'༦', Key_6) \ + OP(L'༧', Key_7) \ + OP(L'༨', Key_8) \ + OP(L'༩', Key_9) \ + OP(L'༴', LSHIFT(Key_8)) \ + OP(L'༵', RALT(LSHIFT(Key_J))) \ + OP(L'༶', RALT(LSHIFT(Key_Z))) \ + OP(L'༷', RALT(Key_J)) \ + OP(L'༸', LSHIFT(Key_7)) \ + OP(L'༹', RALT(Key_L)) \ + OP(L'༼', LSHIFT(Key_9)) \ + OP(L'༽', LSHIFT(Key_0)) \ + OP(L'༾', RALT(LSHIFT(Key_LeftBracket))) \ + OP(L'༿', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'ཀ', Key_Q) \ + OP(L'ཁ', Key_W) \ + OP(L'ག', Key_E) \ + OP(L'ང', Key_R) \ + OP(L'ཅ', Key_O) \ + OP(L'ཆ', Key_P) \ + OP(L'ཇ', Key_LeftBracket) \ + OP(L'཈', LSHIFT(Key_4)) \ + OP(L'ཉ', Key_RightBracket) \ + OP(L'ཊ', RALT(Key_A)) \ + OP(L'ཋ', RALT(Key_S)) \ + OP(L'ཌ', RALT(Key_D)) \ + OP(L'ཎ', RALT(Key_F)) \ + OP(L'ཏ', Key_A) \ + OP(L'ཐ', Key_S) \ + OP(L'ད', Key_D) \ + OP(L'ན', Key_F) \ + OP(L'པ', Key_G) \ + OP(L'ཕ', Key_H) \ + OP(L'བ', Key_J) \ + OP(L'མ', Key_K) \ + OP(L'ཙ', Key_L) \ + OP(L'ཚ', Key_Semicolon) \ + OP(L'ཛ', Key_Quote) \ + OP(L'ཝ', Key_NonUsPound) \ + OP(L'ཞ', Key_Z) \ + OP(L'ཟ', Key_X) \ + OP(L'འ', Key_C) \ + OP(L'ཡ', Key_V) \ + OP(L'ར', Key_B) \ + OP(L'ལ', Key_N) \ + OP(L'ཤ', Key_M) \ + OP(L'ཥ', RALT(Key_M)) \ + OP(L'ས', Key_Comma) \ + OP(L'ཧ', Key_Period) \ + OP(L'ཨ', Key_Slash) \ + OP(L'ཪ', RALT(Key_B)) \ + OP(L'ཬ', RALT(Key_Backtick)) \ + OP(L'཭', RALT(LSHIFT(Key_Backtick))) \ + OP(L'཮', RALT(Key_E)) \ + OP(L'཯', RALT(LSHIFT(Key_E))) \ + OP(L'཰', LSHIFT(Key_5)) \ + OP(L'ཱ', LSHIFT(Key_C)) \ + OP(L'ི', Key_T) \ + OP(L'ུ', Key_Y) \ + OP(L'ེ', Key_U) \ + OP(L'ཻ', LSHIFT(Key_U)) \ + OP(L'ོ', Key_I) \ + OP(L'ཽ', LSHIFT(Key_I)) \ + OP(L'ཾ', RALT(Key_K)) \ + OP(L'ཿ', LSHIFT(Key_Minus)) \ + OP(L'ྀ', LSHIFT(Key_T)) \ + OP(L'ྂ', RALT(LSHIFT(Key_R))) \ + OP(L'ྃ', RALT(Key_R)) \ + OP(L'྄', LSHIFT(Key_Y)) \ + OP(L'ྈ', RALT(Key_Q)) \ + OP(L'ྉ', RALT(Key_W)) \ + OP(L'ྊ', RALT(Key_N)) \ + OP(L'ྋ', RALT(LSHIFT(Key_N))) \ + OP(L'ྐ', LSHIFT(Key_Q)) \ + OP(L'ྑ', LSHIFT(Key_W)) \ + OP(L'ྒ', LSHIFT(Key_E)) \ + OP(L'ྔ', LSHIFT(Key_R)) \ + OP(L'ྕ', LSHIFT(Key_O)) \ + OP(L'ྖ', LSHIFT(Key_P)) \ + OP(L'ྗ', LSHIFT(Key_LeftBracket)) \ + OP(L'ྙ', LSHIFT(Key_RightBracket)) \ + OP(L'ྚ', RALT(LSHIFT(Key_A))) \ + OP(L'ྛ', RALT(LSHIFT(Key_S))) \ + OP(L'ྜ', RALT(LSHIFT(Key_D))) \ + OP(L'ྞ', RALT(LSHIFT(Key_F))) \ + OP(L'ྟ', LSHIFT(Key_A)) \ + OP(L'ྠ', LSHIFT(Key_S)) \ + OP(L'ྡ', LSHIFT(Key_D)) \ + OP(L'ྣ', LSHIFT(Key_F)) \ + OP(L'ྤ', LSHIFT(Key_G)) \ + OP(L'ྥ', LSHIFT(Key_H)) \ + OP(L'ྦ', LSHIFT(Key_J)) \ + OP(L'ྨ', LSHIFT(Key_K)) \ + OP(L'ྩ', LSHIFT(Key_L)) \ + OP(L'ྪ', LSHIFT(Key_Semicolon)) \ + OP(L'ྫ', LSHIFT(Key_Quote)) \ + OP(L'ྭ', LSHIFT(Key_NonUsPound)) \ + OP(L'ྮ', LSHIFT(Key_Z)) \ + OP(L'ྯ', LSHIFT(Key_X)) \ + OP(L'ྰ', RALT(LSHIFT(Key_C))) \ + OP(L'ྱ', LSHIFT(Key_V)) \ + OP(L'ྲ', LSHIFT(Key_B)) \ + OP(L'ླ', LSHIFT(Key_N)) \ + OP(L'ྴ', LSHIFT(Key_M)) \ + OP(L'ྵ', RALT(LSHIFT(Key_M))) \ + OP(L'ྶ', LSHIFT(Key_Comma)) \ + OP(L'ྷ', LSHIFT(Key_Period)) \ + OP(L'ྸ', LSHIFT(Key_Slash)) \ + OP(L'ྺ', RALT(LSHIFT(Key_NonUsPound))) \ + OP(L'ྻ', RALT(LSHIFT(Key_V))) \ + OP(L'ྼ', RALT(LSHIFT(Key_B))) \ + OP(L'྾', RALT(Key_X)) \ + OP(L'྿', RALT(LSHIFT(Key_X))) \ + OP(L'‹', RALT(Key_G)) \ + OP(L'›', RALT(Key_H)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_0)) \ + OP(XKB_KEY_1, RALT(Key_1)) \ + OP(XKB_KEY_2, RALT(Key_2)) \ + OP(XKB_KEY_3, RALT(Key_3)) \ + OP(XKB_KEY_4, RALT(Key_4)) \ + OP(XKB_KEY_5, RALT(Key_5)) \ + OP(XKB_KEY_6, RALT(Key_6)) \ + OP(XKB_KEY_7, RALT(Key_7)) \ + OP(XKB_KEY_8, RALT(Key_8)) \ + OP(XKB_KEY_9, RALT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_at, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_colon, RALT(Key_Semicolon)) \ + OP(XKB_KEY_comma, RALT(Key_Comma)) \ + OP(XKB_KEY_dollar, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_equal, RALT(Key_Equals)) \ + OP(XKB_KEY_exclam, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_greater, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_less, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_minus, RALT(Key_Minus)) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Spacebar))) \ + OP(XKB_KEY_numbersign, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_parenleft, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_parenright, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_percent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_period, RALT(Key_Period)) \ + OP(XKB_KEY_plus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_question, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_quotedbl, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_semicolon, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_slash, RALT(Key_Slash)) \ + OP(XKB_KEY_space, LSHIFT(Key_Spacebar)) \ + OP(XKB_KEY_underscore, RALT(LSHIFT(Key_Minus))) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace bt { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace bt +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/bw/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/bw/standard/keymap.h new file mode 100644 index 0000000000..8a2ac59770 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/bw/standard/keymap.h @@ -0,0 +1,452 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: bw +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'̀', RALT(Key_Backtick)) \ + OP(L'́', RALT(Key_Quote)) \ + OP(L'̂', RALT(Key_6)) \ + OP(L'̃', RALT(LSHIFT(Key_Backtick))) \ + OP(L'̄', RALT(Key_Minus)) \ + OP(L'̆', RALT(Key_9)) \ + OP(L'̇', RALT(Key_8)) \ + OP(L'̈', RALT(LSHIFT(Key_Quote))) \ + OP(L'̌', RALT(Key_0)) \ + OP(L'̣', RALT(LSHIFT(Key_8))) \ + OP(L'̤', RALT(Key_Semicolon)) \ + OP(L'̱', RALT(LSHIFT(Key_Minus))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace bw { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace bw +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/by/latin/keymap.h b/src/kaleidoscope/host_keymap/linux/by/latin/keymap.h new file mode 100644 index 0000000000..dff1fe5e25 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/by/latin/keymap.h @@ -0,0 +1,590 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: by +// variant: latin + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ć', RALT(LSHIFT(Key_C))) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', RALT(Key_C)) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', RALT(LSHIFT(Key_V))) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', RALT(Key_V)) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ń', RALT(LSHIFT(Key_N))) /* U+0143, XKB_KEY_Nacute, LATIN CAPITAL LETTER N WITH ACUTE */ \ + OP(L'ń', RALT(Key_N)) /* U+0144, XKB_KEY_nacute, LATIN SMALL LETTER N WITH ACUTE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ś', RALT(LSHIFT(Key_S))) /* U+015a, XKB_KEY_Sacute, LATIN CAPITAL LETTER S WITH ACUTE */ \ + OP(L'ś', RALT(Key_S)) /* U+015b, XKB_KEY_sacute, LATIN SMALL LETTER S WITH ACUTE */ \ + OP(L'Š', RALT(LSHIFT(Key_W))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_W)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ŭ', RALT(LSHIFT(Key_U))) /* U+016c, XKB_KEY_Ubreve, LATIN CAPITAL LETTER U WITH BREVE */ \ + OP(L'ŭ', RALT(Key_U)) /* U+016d, XKB_KEY_ubreve, LATIN SMALL LETTER U WITH BREVE */ \ + OP(L'Ź', RALT(LSHIFT(Key_Z))) /* U+0179, XKB_KEY_Zacute, LATIN CAPITAL LETTER Z WITH ACUTE */ \ + OP(L'ź', RALT(Key_Z)) /* U+017a, XKB_KEY_zacute, LATIN SMALL LETTER Z WITH ACUTE */ \ + OP(L'Ž', RALT(LSHIFT(Key_X))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_X)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Nacute, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Sacute, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ubreve, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zacute, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, RALT(Key_C)) \ + OP(XKB_KEY_ccaron, RALT(Key_V)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nacute, RALT(Key_N)) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_sacute, RALT(Key_S)) \ + OP(XKB_KEY_scaron, RALT(Key_W)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ubreve, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zacute, RALT(Key_Z)) \ + OP(XKB_KEY_zcaron, RALT(Key_X)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace by { +namespace latin { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace latin +} // namespace by +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/by/legacy/keymap.h b/src/kaleidoscope/host_keymap/linux/by/legacy/keymap.h new file mode 100644 index 0000000000..c9cfe784a7 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/by/legacy/keymap.h @@ -0,0 +1,372 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: by +// variant: legacy + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('\'', Key_RightBracket) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_6)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_7)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_5)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_8)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'\'', Key_RightBracket) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_6)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_7)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_5)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_8)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Ё', LSHIFT(Key_Backtick)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'І', LSHIFT(Key_B)) /* U+0406, XKB_KEY_Ukrainian_I, CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'Ў', LSHIFT(Key_O)) /* U+040e, XKB_KEY_Byelorussian_SHORTU, CYRILLIC CAPITAL LETTER SHORT U */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Backtick) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'і', Key_B) /* U+0456, XKB_KEY_Ukrainian_i, CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'ў', Key_O) /* U+045e, XKB_KEY_Byelorussian_shortu, CYRILLIC SMALL LETTER SHORT U */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Byelorussian_SHORTU, LSHIFT(Key_O)) \ + OP(XKB_KEY_Byelorussian_shortu, Key_O) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Ukrainian_I, LSHIFT(Key_B)) /* XKB_KEY_Ukranian_I, deprecated */ \ + OP(XKB_KEY_Ukrainian_i, Key_B) /* XKB_KEY_Ukranian_i, deprecated */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_RightBracket) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_4)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_colon, LSHIFT(Key_5)) \ + OP(XKB_KEY_comma, LSHIFT(Key_6)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_period, LSHIFT(Key_7)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_8)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace by { +namespace legacy { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace legacy +} // namespace by +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/by/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/by/standard/keymap.h new file mode 100644 index 0000000000..46fc138475 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/by/standard/keymap.h @@ -0,0 +1,374 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: by +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('\'', Key_RightBracket) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'\'', Key_RightBracket) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Ё', LSHIFT(Key_Backtick)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'І', LSHIFT(Key_B)) /* U+0406, XKB_KEY_Ukrainian_I, CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'Ў', LSHIFT(Key_O)) /* U+040e, XKB_KEY_Byelorussian_SHORTU, CYRILLIC CAPITAL LETTER SHORT U */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Backtick) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'і', Key_B) /* U+0456, XKB_KEY_Ukrainian_i, CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'ў', Key_O) /* U+045e, XKB_KEY_Byelorussian_shortu, CYRILLIC SMALL LETTER SHORT U */ \ + OP(L'№', LSHIFT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Byelorussian_SHORTU, LSHIFT(Key_O)) \ + OP(XKB_KEY_Byelorussian_shortu, Key_O) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Ukrainian_I, LSHIFT(Key_B)) /* XKB_KEY_Ukranian_I, deprecated */ \ + OP(XKB_KEY_Ukrainian_i, Key_B) /* XKB_KEY_Ukranian_i, deprecated */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_RightBracket) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, LSHIFT(Key_6)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_7)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_4)) \ + OP(XKB_KEY_slash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace by { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace by +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ca/eng/keymap.h b/src/kaleidoscope/host_keymap/linux/ca/eng/keymap.h new file mode 100644 index 0000000000..f4705c96c8 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ca/eng/keymap.h @@ -0,0 +1,439 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ca +// variant: eng + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ca { +namespace eng { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace eng +} // namespace ca +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ca/fr-dvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/ca/fr-dvorak/keymap.h new file mode 100644 index 0000000000..3c10afbe67 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ca/fr-dvorak/keymap.h @@ -0,0 +1,481 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ca +// variant: fr-dvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_Backtick) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_W)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsPound) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsPound)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_6)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_Minus)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Backtick)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Equals)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_Q)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_Backtick) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_W)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsPound) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsPound)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_6)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_Minus)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Backtick)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Equals)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_Q)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¢', RALT(Key_4)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_5)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(Key_7)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_S)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'«', Key_NonUsBackslashAndPipe) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'­', RALT(Key_E)) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'¯', RALT(Key_W)) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', RALT(Key_NonUsBackslashAndPipe)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_1)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_8)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_9)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'»', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_0)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_Quote)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_RightBracket)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'É', LSHIFT(Key_LeftBracket)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'é', Key_LeftBracket) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_Eacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_W)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_Z)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, RALT(Key_Backtick)) \ + OP(XKB_KEY_bar, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_braceleft, RALT(Key_Q)) \ + OP(XKB_KEY_braceright, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_bracketleft, RALT(Key_Minus)) \ + OP(XKB_KEY_bracketright, RALT(Key_Equals)) \ + OP(XKB_KEY_brokenbar, RALT(Key_7)) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_cent, RALT(Key_4)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Z)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_currency, RALT(Key_5)) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dead_acute, RALT(Key_LeftBracket)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_cedilla, Key_Equals) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_Minus) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_Equals)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, Key_Q) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_degree, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_eacute, Key_LeftBracket) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_guillemotleft, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_hyphen, RALT(Key_E)) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_less, Key_NonUsPound) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(Key_W)) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, Key_Backtick) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_onehalf, RALT(Key_Quote)) \ + OP(XKB_KEY_onequarter, RALT(Key_0)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_plus, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_plusminus, RALT(Key_1)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_6)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_section, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, Key_Z) \ + OP(XKB_KEY_slash, LSHIFT(Key_3)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_threequarters, RALT(Key_RightBracket)) \ + OP(XKB_KEY_threesuperior, RALT(Key_9)) \ + OP(XKB_KEY_twosuperior, RALT(Key_8)) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ca { +namespace fr_dvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace fr_dvorak +} // namespace ca +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ca/fr-legacy/keymap.h b/src/kaleidoscope/host_keymap/linux/ca/fr-legacy/keymap.h new file mode 100644 index 0000000000..a70f55bf50 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ca/fr-legacy/keymap.h @@ -0,0 +1,515 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ca +// variant: fr-legacy + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_Comma)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_6)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Minus)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_Comma)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_6)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Minus)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¥', RALT(Key_Y)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_F)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', Key_Backtick) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', LSHIFT(Key_NonUsPound)) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_RightBracket)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', LSHIFT(Key_Quote)) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'É', LSHIFT(Key_Slash)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ù', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_NonUsPound) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_RightBracket) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_Quote) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_Slash) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_NonUsBackslashAndPipe) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Agrave, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Egrave, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ugrave, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_agrave, Key_NonUsPound) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_Comma)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bar, RALT(Key_Minus)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_RightBracket) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, Key_Backtick) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Slash) \ + OP(XKB_KEY_egrave, Key_Quote) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, RALT(Key_Comma)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(Key_F)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_6)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, RALT(Key_Slash)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_Y)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ca { +namespace fr_legacy { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace fr_legacy +} // namespace ca +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ca/ike/keymap.h b/src/kaleidoscope/host_keymap/linux/ca/ike/keymap.h new file mode 100644 index 0000000000..a038877372 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ca/ike/keymap.h @@ -0,0 +1,311 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ca +// variant: ike + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_G)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_H)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_V)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_G)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_H)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_V)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'ᐃ', Key_W) \ + OP(L'ᐅ', Key_S) \ + OP(L'ᐊ', Key_X) \ + OP(L'ᐞ', LSHIFT(Key_RightBracket)) \ + OP(L'ᐱ', LSHIFT(Key_W)) \ + OP(L'ᐳ', LSHIFT(Key_S)) \ + OP(L'ᐸ', LSHIFT(Key_X)) \ + OP(L'ᑉ', Key_2) \ + OP(L'ᑎ', Key_T) \ + OP(L'ᑐ', Key_G) \ + OP(L'ᑕ', Key_B) \ + OP(L'ᑦ', Key_5) \ + OP(L'ᑭ', Key_R) \ + OP(L'ᑯ', Key_F) \ + OP(L'ᑲ', Key_V) \ + OP(L'ᒃ', Key_4) \ + OP(L'ᒋ', LSHIFT(Key_Q)) \ + OP(L'ᒍ', LSHIFT(Key_A)) \ + OP(L'ᒐ', LSHIFT(Key_Z)) \ + OP(L'ᒡ', Key_LeftBracket) \ + OP(L'ᒥ', Key_U) \ + OP(L'ᒧ', Key_J) \ + OP(L'ᒪ', Key_M) \ + OP(L'ᒻ', Key_7) \ + OP(L'ᓂ', Key_I) \ + OP(L'ᓄ', Key_K) \ + OP(L'ᓇ', LSHIFT(Key_N)) \ + OP(L'ᓐ', Key_8) \ + OP(L'ᓕ', Key_O) \ + OP(L'ᓗ', Key_L) \ + OP(L'ᓚ', LSHIFT(Key_M)) \ + OP(L'ᓪ', Key_9) \ + OP(L'ᓯ', Key_Y) \ + OP(L'ᓱ', Key_H) \ + OP(L'ᓴ', Key_N) \ + OP(L'ᔅ', LSHIFT(Key_LeftBracket)) \ + OP(L'ᔨ', Key_P) \ + OP(L'ᔪ', LSHIFT(Key_J)) \ + OP(L'ᔭ', Key_Slash) \ + OP(L'ᔾ', Key_0) \ + OP(L'ᕆ', LSHIFT(Key_E)) \ + OP(L'ᕈ', LSHIFT(Key_D)) \ + OP(L'ᕋ', LSHIFT(Key_C)) \ + OP(L'ᕐ', Key_3) \ + OP(L'ᕕ', LSHIFT(Key_F)) \ + OP(L'ᕗ', LSHIFT(Key_K)) \ + OP(L'ᕙ', LSHIFT(Key_Slash)) \ + OP(L'ᕝ', Key_Equals) \ + OP(L'ᕵ', LSHIFT(Key_Backtick)) \ + OP(L'ᕷ', LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(L'ᕹ', Key_NonUsBackslashAndPipe) \ + OP(L'ᕻ', Key_Backtick) \ + OP(L'ᕼ', LSHIFT(Key_B)) \ + OP(L'ᕿ', Key_E) \ + OP(L'ᖁ', Key_D) \ + OP(L'ᖃ', Key_C) \ + OP(L'ᖅ', Key_6) \ + OP(L'ᖏ', Key_Q) \ + OP(L'ᖑ', Key_A) \ + OP(L'ᖓ', Key_Z) \ + OP(L'ᖕ', Key_1) \ + OP(L'ᖖ', LSHIFT(Key_R)) \ + OP(L'ᖠ', LSHIFT(Key_O)) \ + OP(L'ᖢ', LSHIFT(Key_L)) \ + OP(L'ᖤ', LSHIFT(Key_I)) \ + OP(L'ᖦ', LSHIFT(Key_P)) \ + OP(L'ᙱ', LSHIFT(Key_T)) \ + OP(L'ᙳ', LSHIFT(Key_Y)) \ + OP(L'ᙵ', LSHIFT(Key_U)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dead_abovedot, Key_RightBracket) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_equal, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_G)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_H)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_question, LSHIFT(Key_V)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ca { +namespace ike { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ike +} // namespace ca +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ca/kut/keymap.h b/src/kaleidoscope/host_keymap/linux/ca/kut/keymap.h new file mode 100644 index 0000000000..c90b83f519 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ca/kut/keymap.h @@ -0,0 +1,469 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ca +// variant: kut + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'Á', RALT(LSHIFT(Key_A))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'É', RALT(LSHIFT(Key_E))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(LSHIFT(Key_I))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ó', RALT(LSHIFT(Key_O))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ú', RALT(LSHIFT(Key_U))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'á', RALT(Key_A)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'é', RALT(Key_E)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', RALT(Key_I)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', RALT(Key_O)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ú', RALT(Key_U)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ǂ', RALT(Key_T)) \ + OP(L'ʔ', RALT(Key_Slash)) \ + OP(L'ʾ', RALT(Key_Semicolon)) \ + OP(L'̓', RALT(Key_Comma)) \ + OP(L'̕', RALT(Key_Quote)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_RightControl) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, RALT(Key_E)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ca { +namespace kut { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace kut +} // namespace ca +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ca/multi-2gr/keymap.h b/src/kaleidoscope/host_keymap/linux/ca/multi-2gr/keymap.h new file mode 100644 index 0000000000..42cb3ecb7d --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ca/multi-2gr/keymap.h @@ -0,0 +1,329 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ca +// variant: multi-2gr + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', LSHIFT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', Key_C) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', LSHIFT(Key_Y)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_S)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', LSHIFT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', LSHIFT(Key_F)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'­', LSHIFT(Key_Backtick)) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'®', LSHIFT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'±', LSHIFT(Key_9)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', Key_2) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', Key_3) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', Key_M) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', Key_R) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', Key_Period) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', Key_1) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', LSHIFT(Key_M)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'¼', Key_4) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', Key_5) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', Key_6) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', LSHIFT(Key_Minus)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', LSHIFT(Key_A)) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', LSHIFT(Key_D)) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', LSHIFT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', LSHIFT(Key_O)) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', LSHIFT(Key_P)) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', Key_S) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', Key_A) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', Key_D) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', LSHIFT(Key_Period)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', Key_O) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', Key_P) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ħ', LSHIFT(Key_H)) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', Key_H) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', LSHIFT(Key_I)) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'IJ', LSHIFT(Key_J)) \ + OP(L'ij', Key_J) \ + OP(L'ĸ', Key_K) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ŀ', LSHIFT(Key_L)) \ + OP(L'ŀ', Key_L) \ + OP(L'Ł', LSHIFT(Key_W)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', Key_W) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'ʼn', Key_N) \ + OP(L'Ŋ', LSHIFT(Key_G)) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', Key_G) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', LSHIFT(Key_E)) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', Key_E) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ŧ', LSHIFT(Key_T)) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', Key_T) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', LSHIFT(Key_Q)) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'―', Key_Comma) /* U+2015, XKB_KEY_Greek_horizbar, HORIZONTAL BAR */ \ + OP(L'‘', LSHIFT(Key_V)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', LSHIFT(Key_B)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', Key_V) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', Key_B) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'™', LSHIFT(Key_8)) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅜', LSHIFT(Key_5)) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', LSHIFT(Key_6)) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', LSHIFT(Key_7)) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', Key_Y) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', LSHIFT(Key_U)) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', Key_I) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', Key_U) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'♪', LSHIFT(Key_N)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_AE, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_ENG, LSHIFT(Key_G)) \ + OP(XKB_KEY_ETH, LSHIFT(Key_D)) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Greek_OMEGA, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Greek_horizbar, Key_Comma) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, LSHIFT(Key_H)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, LSHIFT(Key_W)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_OE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Oslash, LSHIFT(Key_O)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_THORN, LSHIFT(Key_P)) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, LSHIFT(Key_T)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ae, Key_A) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_cent, Key_C) \ + OP(XKB_KEY_copyright, LSHIFT(Key_C)) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_dead_abovedot, LSHIFT(Key_Slash)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Semicolon) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, LSHIFT(Key_NonUsPound)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, LSHIFT(Key_Quote)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, Key_Equals) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_doubleacute, LSHIFT(Key_Semicolon)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_macron, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, LSHIFT(Key_Equals)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, Key_RightBracket) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_division, LSHIFT(Key_Period)) \ + OP(XKB_KEY_downarrow, Key_U) \ + OP(XKB_KEY_eng, Key_G) \ + OP(XKB_KEY_eth, Key_D) \ + OP(XKB_KEY_exclamdown, LSHIFT(Key_1)) \ + OP(XKB_KEY_fiveeighths, LSHIFT(Key_6)) \ + OP(XKB_KEY_hstroke, Key_H) \ + OP(XKB_KEY_hyphen, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_idotless, LSHIFT(Key_I)) \ + OP(XKB_KEY_kra, Key_K) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_leftarrow, Key_Y) \ + OP(XKB_KEY_leftdoublequotemark, Key_V) \ + OP(XKB_KEY_leftsinglequotemark, LSHIFT(Key_V)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, Key_W) \ + OP(XKB_KEY_masculine, LSHIFT(Key_M)) \ + OP(XKB_KEY_mu, Key_M) \ + OP(XKB_KEY_multiply, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_oe, Key_E) \ + OP(XKB_KEY_onehalf, Key_5) \ + OP(XKB_KEY_onequarter, Key_4) \ + OP(XKB_KEY_onesuperior, Key_1) \ + OP(XKB_KEY_ordfeminine, LSHIFT(Key_F)) \ + OP(XKB_KEY_oslash, Key_O) \ + OP(XKB_KEY_paragraph, Key_R) \ + OP(XKB_KEY_periodcentered, Key_Period) \ + OP(XKB_KEY_plusminus, LSHIFT(Key_9)) \ + OP(XKB_KEY_questiondown, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_registered, LSHIFT(Key_R)) \ + OP(XKB_KEY_rightarrow, Key_I) \ + OP(XKB_KEY_rightdoublequotemark, Key_B) \ + OP(XKB_KEY_rightsinglequotemark, LSHIFT(Key_B)) \ + OP(XKB_KEY_section, LSHIFT(Key_S)) \ + OP(XKB_KEY_seveneighths, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_S) \ + OP(XKB_KEY_sterling, LSHIFT(Key_3)) \ + OP(XKB_KEY_thorn, Key_P) \ + OP(XKB_KEY_threeeighths, LSHIFT(Key_5)) \ + OP(XKB_KEY_threequarters, Key_6) \ + OP(XKB_KEY_threesuperior, Key_3) \ + OP(XKB_KEY_trademark, LSHIFT(Key_8)) \ + OP(XKB_KEY_tslash, Key_T) \ + OP(XKB_KEY_twosuperior, Key_2) \ + OP(XKB_KEY_uparrow, LSHIFT(Key_U)) \ + OP(XKB_KEY_yen, LSHIFT(Key_Y)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ca { +namespace multi_2gr { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace multi_2gr +} // namespace ca +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ca/multi/keymap.h b/src/kaleidoscope/host_keymap/linux/ca/multi/keymap.h new file mode 100644 index 0000000000..a0a1aece8f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ca/multi/keymap.h @@ -0,0 +1,484 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ca +// variant: multi + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Period)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_Comma)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Backtick) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_6)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_9)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', LSHIFT(Key_Backtick)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_0)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_8)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Period)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_Comma)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Backtick) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_6)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_9)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', LSHIFT(Key_Backtick)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_0)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_8)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¢', RALT(Key_4)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_5)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_O)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'°', RALT(Key_Semicolon)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_1)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_P)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_Minus)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'À', LSHIFT(Key_NonUsPound)) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Ç', LSHIFT(Key_RightBracket)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', LSHIFT(Key_Quote)) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'É', LSHIFT(Key_Slash)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ù', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'à', Key_NonUsPound) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ç', Key_RightBracket) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_Quote) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_Slash) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ù', Key_NonUsBackslashAndPipe) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Agrave, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Eacute, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Egrave, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ugrave, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_agrave, Key_NonUsPound) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_Comma)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_bar, RALT(Key_Backtick)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_8)) \ + OP(XKB_KEY_bracketleft, RALT(Key_9)) \ + OP(XKB_KEY_bracketright, RALT(Key_0)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_RightBracket) \ + OP(XKB_KEY_cent, RALT(Key_4)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_currency, RALT(Key_5)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, RALT(Key_Slash)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_LeftBracket)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_degree, RALT(Key_Semicolon)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Slash) \ + OP(XKB_KEY_egrave, Key_Quote) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, RALT(Key_Comma)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_onehalf, RALT(Key_Minus)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_P)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(Key_1)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_6)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Period)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_O)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Backtick) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ca { +namespace multi { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace multi +} // namespace ca +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ca/multix/keymap.h b/src/kaleidoscope/host_keymap/linux/ca/multix/keymap.h new file mode 100644 index 0000000000..9f9ca612df --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ca/multix/keymap.h @@ -0,0 +1,484 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ca +// variant: multix + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Period)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_Comma)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Backtick) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_6)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_9)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', LSHIFT(Key_Backtick)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_0)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_8)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Period)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_Comma)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Backtick) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_6)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_9)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', LSHIFT(Key_Backtick)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_0)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_8)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¢', RALT(Key_4)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_5)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_O)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'°', RALT(Key_Semicolon)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_1)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_P)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_Minus)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'À', LSHIFT(Key_NonUsPound)) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Ç', LSHIFT(Key_RightBracket)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', LSHIFT(Key_Quote)) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'É', LSHIFT(Key_Slash)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ù', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'à', Key_NonUsPound) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ç', Key_RightBracket) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_Quote) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_Slash) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ù', Key_NonUsBackslashAndPipe) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Agrave, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Eacute, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Egrave, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_ISO_Level5_Shift, Key_RightControl) /* XKB_KEY_ISO_Level5_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ugrave, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_agrave, Key_NonUsPound) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_Comma)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_bar, RALT(Key_Backtick)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_8)) \ + OP(XKB_KEY_bracketleft, RALT(Key_9)) \ + OP(XKB_KEY_bracketright, RALT(Key_0)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_RightBracket) \ + OP(XKB_KEY_cent, RALT(Key_4)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_currency, RALT(Key_5)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, RALT(Key_Slash)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_LeftBracket)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_degree, RALT(Key_Semicolon)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Slash) \ + OP(XKB_KEY_egrave, Key_Quote) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, RALT(Key_Comma)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_onehalf, RALT(Key_Minus)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_P)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(Key_1)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_6)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Period)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_O)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Backtick) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ca { +namespace multix { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace multix +} // namespace ca +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ca/shs/keymap.h b/src/kaleidoscope/host_keymap/linux/ca/shs/keymap.h new file mode 100644 index 0000000000..db00259356 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ca/shs/keymap.h @@ -0,0 +1,461 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ca +// variant: shs + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Á', RALT(LSHIFT(Key_A))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'É', RALT(LSHIFT(Key_E))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(LSHIFT(Key_I))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ó', RALT(LSHIFT(Key_O))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ú', RALT(LSHIFT(Key_U))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'á', RALT(Key_A)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'é', RALT(Key_E)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', RALT(Key_I)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', RALT(Key_O)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ú', RALT(Key_U)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'̓', RALT(Key_Comma)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_RightControl) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, RALT(Key_E)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ca { +namespace shs { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace shs +} // namespace ca +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ca/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/ca/standard/keymap.h new file mode 100644 index 0000000000..20133e1693 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ca/standard/keymap.h @@ -0,0 +1,481 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ca +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_Backtick) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_Comma)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsPound) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsPound)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_6)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Backtick)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_Semicolon)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_Backtick) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_Comma)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsPound) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsPound)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_6)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Backtick)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_Semicolon)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¢', RALT(Key_4)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_5)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(Key_7)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_O)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'«', Key_NonUsBackslashAndPipe) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'­', RALT(Key_Period)) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'¯', RALT(Key_Comma)) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', RALT(Key_NonUsBackslashAndPipe)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_1)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_8)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_9)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_P)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'»', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_0)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_Minus)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_Equals)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'É', LSHIFT(Key_Slash)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'é', Key_Slash) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Eacute, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_Comma)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_Semicolon)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Backtick)) \ + OP(XKB_KEY_bar, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_braceleft, RALT(Key_Quote)) \ + OP(XKB_KEY_braceright, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(Key_7)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_4)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_currency, RALT(Key_5)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, RALT(Key_Slash)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_cedilla, Key_RightBracket) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, Key_Quote) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_degree, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Slash) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_guillemotleft, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hyphen, RALT(Key_Period)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsPound) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(Key_Comma)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, Key_Backtick) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_onehalf, RALT(Key_Minus)) \ + OP(XKB_KEY_onequarter, RALT(Key_0)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_P)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(Key_1)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_6)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_O)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, LSHIFT(Key_3)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threequarters, RALT(Key_Equals)) \ + OP(XKB_KEY_threesuperior, RALT(Key_9)) \ + OP(XKB_KEY_twosuperior, RALT(Key_8)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ca { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace ca +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ca/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/ca/sun_type6/keymap.h new file mode 100644 index 0000000000..10f56cccc6 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ca/sun_type6/keymap.h @@ -0,0 +1,486 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ca +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Period)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_Comma)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Backtick) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_6)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_9)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Backtick)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_0)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Slash)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_8)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Period)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_Comma)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Backtick) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_6)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_9)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Backtick)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_0)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Slash)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_8)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_4)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_5)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_O)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'°', RALT(Key_Semicolon)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_1)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_P)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_Minus)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'À', LSHIFT(Key_NonUsPound)) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Ç', LSHIFT(Key_RightBracket)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', LSHIFT(Key_Quote)) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'É', LSHIFT(Key_Slash)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ú', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'à', Key_NonUsPound) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ç', Key_RightBracket) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_Quote) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_Slash) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ú', Key_NonUsBackslashAndPipe) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Agrave, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Eacute, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Egrave, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_agrave, Key_NonUsPound) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_Comma)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Backtick)) \ + OP(XKB_KEY_bar, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_8)) \ + OP(XKB_KEY_bracketleft, RALT(Key_9)) \ + OP(XKB_KEY_bracketright, RALT(Key_0)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_RightBracket) \ + OP(XKB_KEY_cent, RALT(Key_4)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_currency, RALT(Key_5)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_LeftBracket)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_degree, RALT(Key_Semicolon)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Slash) \ + OP(XKB_KEY_egrave, Key_Quote) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Slash)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, RALT(Key_Comma)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_onehalf, RALT(Key_Minus)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_P)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(Key_1)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_6)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Period)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_O)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Backtick) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ca { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace ca +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/cd/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/cd/standard/keymap.h new file mode 100644 index 0000000000..2e03f16372 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/cd/standard/keymap.h @@ -0,0 +1,484 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: cd +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_NonUsPound) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_1)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_RightBracket)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_Minus)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_Slash)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_4) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_7) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_RightBracket) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_5)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_6)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_4)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_7)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_LeftBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', Key_5) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', Key_6) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_NonUsPound) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_1)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_RightBracket)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_Minus)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_Slash)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_4) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_7) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_RightBracket) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_5)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_6)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_4)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_7)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_LeftBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', Key_5) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', Key_6) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_3)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', RALT(LSHIFT(Key_Minus))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'»', RALT(Key_8)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_Q))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(Key_Equals)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'æ', RALT(Key_Q)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'÷', RALT(LSHIFT(Key_Equals))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_N))) \ + OP(L'ŋ', RALT(Key_N)) \ + OP(L'Œ', RALT(LSHIFT(Key_E))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_E)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ɔ', LSHIFT(Key_Quote)) \ + OP(L'Ɛ', LSHIFT(Key_LeftBracket)) \ + OP(L'Ɨ', RALT(LSHIFT(Key_I))) \ + OP(L'Ʉ', RALT(LSHIFT(Key_U))) \ + OP(L'ɔ', Key_Quote) \ + OP(L'ɛ', Key_LeftBracket) \ + OP(L'ɨ', RALT(Key_I)) \ + OP(L'ʉ', RALT(Key_U)) \ + OP(L'̀', Key_3) \ + OP(L'́', Key_2) \ + OP(L'̂', Key_8) \ + OP(L'̃', RALT(Key_Backtick)) \ + OP(L'̈', Key_0) \ + OP(L'̌', Key_9) \ + OP(L'̍', RALT(Key_9)) \ + OP(L'̧', RALT(Key_M)) \ + OP(L'’', RALT(Key_Slash)) \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_ae, RALT(Key_Q)) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_Slash)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, Key_RightBracket) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, Key_5) \ + OP(XKB_KEY_braceright, Key_6) \ + OP(XKB_KEY_bracketleft, RALT(Key_4)) \ + OP(XKB_KEY_bracketright, RALT(Key_7)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_dollar, RALT(Key_RightBracket)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_6)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_3)) \ + OP(XKB_KEY_guillemotright, RALT(Key_8)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, RALT(Key_5)) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(Key_Equals)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_numbersign, RALT(Key_1)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oe, RALT(Key_E)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, Key_4) \ + OP(XKB_KEY_parenright, Key_7) \ + OP(XKB_KEY_percent, RALT(Key_Minus)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_NonUsPound) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace cd { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace cd +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ch/de_mac/keymap.h b/src/kaleidoscope/host_keymap/linux/ch/de_mac/keymap.h new file mode 100644 index 0000000000..8bef22daed --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ch/de_mac/keymap.h @@ -0,0 +1,600 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ch +// variant: de_mac + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_RightBracket)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_NonUsPound) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_G)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(LSHIFT(Key_7))) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_6)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_Equals))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_RightBracket)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_8)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_7)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_9)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_RightBracket)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_NonUsPound) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_G)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(LSHIFT(Key_7))) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_6)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_Equals))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_RightBracket)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_8)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_7)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_9)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_I)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_Semicolon)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_NonUsPound)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(Key_Z)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_H)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Comma)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_L)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'­', RALT(Key_Slash)) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_K))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', RALT(Key_U)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_1)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_NonUsPound)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_H))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(Key_J)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_Comma))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_Minus)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_W))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Å', RALT(LSHIFT(Key_A))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Quote))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(Key_4)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', RALT(LSHIFT(Key_R))) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'Ë', RALT(LSHIFT(Key_E))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Í', RALT(LSHIFT(Key_Y))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Î', RALT(LSHIFT(Key_T))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ò', RALT(LSHIFT(Key_8))) /* U+00d2, XKB_KEY_Ograve, LATIN CAPITAL LETTER O WITH GRAVE */ \ + OP(L'Ô', RALT(LSHIFT(Key_9))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ù', RALT(LSHIFT(Key_U))) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'Ú', RALT(LSHIFT(Key_0))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', LSHIFT(Key_Quote)) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', RALT(Key_A)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_Quote)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', LSHIFT(Key_4)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', LSHIFT(Key_LeftBracket)) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', LSHIFT(Key_Semicolon)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ð', RALT(LSHIFT(Key_J))) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'ÿ', RALT(LSHIFT(Key_LeftBracket))) /* U+00ff, XKB_KEY_ydiaeresis, LATIN SMALL LETTER Y WITH DIAERESIS */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Œ', RALT(LSHIFT(Key_Q))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_Q)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ÿ', RALT(LSHIFT(Key_Z))) /* U+0178, XKB_KEY_Ydiaeresis, LATIN CAPITAL LETTER Y WITH DIAERESIS */ \ + OP(L'ƒ', RALT(Key_F)) /* U+0192, XKB_KEY_function, LATIN SMALL LETTER F WITH HOOK */ \ + OP(L'˘', RALT(LSHIFT(Key_Semicolon))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'Δ', RALT(Key_K)) /* U+0394, XKB_KEY_Greek_DELTA, GREEK CAPITAL LETTER DELTA */ \ + OP(L'Π', RALT(LSHIFT(Key_P))) /* U+03a0, XKB_KEY_Greek_PI, GREEK CAPITAL LETTER PI */ \ + OP(L'Σ', RALT(Key_W)) /* U+03a3, XKB_KEY_Greek_SIGMA, GREEK CAPITAL LETTER SIGMA */ \ + OP(L'Ω', RALT(Key_Y)) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'π', RALT(Key_P)) /* U+03c0, XKB_KEY_Greek_pi, GREEK SMALL LETTER PI */ \ + OP(L'σ', RALT(Key_D)) /* U+03c3, XKB_KEY_Greek_sigma, GREEK SMALL LETTER SIGMA */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', RALT(Key_2)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_2))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'†', RALT(Key_T)) /* U+2020, XKB_KEY_dagger, DAGGER */ \ + OP(L'‡', RALT(LSHIFT(Key_F))) /* U+2021, XKB_KEY_doubledagger, DOUBLE DAGGER */ \ + OP(L'•', RALT(LSHIFT(Key_NonUsPound))) /* U+2022, XKB_KEY_enfilledcircbullet, BULLET */ \ + OP(L'…', RALT(Key_Period)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‸', RALT(LSHIFT(Key_L))) /* U+2038, XKB_KEY_caret, CARET */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_X))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'√', RALT(Key_V)) /* U+221a, XKB_KEY_radical, SQUARE ROOT */ \ + OP(L'∞', RALT(LSHIFT(Key_1))) /* U+221e, XKB_KEY_infinity, INFINITY */ \ + OP(L'∫', RALT(Key_B)) /* U+222b, XKB_KEY_integral, INTEGRAL */ \ + OP(L'≃', RALT(Key_X)) /* U+2243, XKB_KEY_similarequal, ASYMPTOTICALLY EQUAL TO */ \ + OP(L'≠', RALT(Key_0)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'≤', RALT(Key_NonUsBackslashAndPipe)) /* U+2264, XKB_KEY_lessthanequal, LESS-THAN OR EQUAL TO */ \ + OP(L'≥', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+2265, XKB_KEY_greaterthanequal, GREATER-THAN OR EQUAL TO */ \ + OP(L'◦', RALT(LSHIFT(Key_N))) /* U+25e6, XKB_KEY_enopencircbullet, WHITE BULLET */ \ + OP(L'♦', RALT(LSHIFT(Key_V))) /* U+2666, XKB_KEY_diamond, BLACK DIAMOND SUIT */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(Key_4)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Egrave, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_DELTA, RALT(Key_K)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(Key_Y)) \ + OP(XKB_KEY_Greek_PI, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Greek_SIGMA, RALT(Key_W)) \ + OP(XKB_KEY_Greek_pi, RALT(Key_P)) \ + OP(XKB_KEY_Greek_sigma, RALT(Key_D)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_Ograve, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_Ugrave, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Ydiaeresis, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_Quote)) \ + OP(XKB_KEY_agrave, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_A)) \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_3)) \ + OP(XKB_KEY_at, RALT(Key_G)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_bar, RALT(Key_7)) \ + OP(XKB_KEY_braceleft, RALT(Key_8)) \ + OP(XKB_KEY_braceright, RALT(Key_9)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_6)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caret, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_ccedilla, LSHIFT(Key_4)) \ + OP(XKB_KEY_cent, RALT(Key_Semicolon)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dagger, RALT(Key_T)) \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_M))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Equals)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, Key_Equals) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_N)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_U)) \ + OP(XKB_KEY_diamond, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, Key_NonUsPound) \ + OP(XKB_KEY_doubledagger, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_egrave, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_ellipsis, RALT(Key_Period)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_enfilledcircbullet, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_enopencircbullet, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_exclam, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_exclamdown, RALT(Key_I)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_function, RALT(Key_F)) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_RightBracket)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_greaterthanequal, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Comma)) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hyphen, RALT(Key_Slash)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_infinity, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_integral, RALT(Key_B)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftcaret, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_2)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lessthanequal, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_masculine, RALT(Key_J)) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notequal, RALT(Key_0)) \ + OP(XKB_KEY_notsign, RALT(Key_L)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oe, RALT(Key_Q)) \ + OP(XKB_KEY_ordfeminine, RALT(Key_H)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_plus, LSHIFT(Key_1)) \ + OP(XKB_KEY_plusminus, RALT(Key_1)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_radical, RALT(Key_V)) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_similarequal, RALT(Key_X)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_ydiaeresis, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_yen, RALT(Key_Z)) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ch { +namespace de_mac { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace de_mac +} // namespace ch +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ch/de_nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/ch/de_nodeadkeys/keymap.h new file mode 100644 index 0000000000..447cb768be --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ch/de_nodeadkeys/keymap.h @@ -0,0 +1,585 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ch +// variant: de_nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_RightBracket)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_NonUsPound) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_Equals) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_RightBracket)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_NonUsPound) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_Equals) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_8)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_NonUsPound)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', Key_RightBracket) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'´', RALT(Key_Minus)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', LSHIFT(Key_Quote)) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', LSHIFT(Key_4)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', LSHIFT(Key_LeftBracket)) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', LSHIFT(Key_Semicolon)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, RALT(Key_Minus)) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_agrave, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_Equals) \ + OP(XKB_KEY_asciitilde, RALT(Key_Equals)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_3)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_Quote)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, LSHIFT(Key_4)) \ + OP(XKB_KEY_cent, RALT(Key_8)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_diaeresis, Key_RightBracket) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, Key_NonUsPound) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_egrave, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_1)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ch { +namespace de_nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace de_nodeadkeys +} // namespace ch +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ch/de_sundeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/ch/de_sundeadkeys/keymap.h new file mode 100644 index 0000000000..633c0b1475 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ch/de_sundeadkeys/keymap.h @@ -0,0 +1,576 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ch +// variant: de_sundeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_RightBracket)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_NonUsPound) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_RightBracket)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_NonUsPound) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_8)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_NonUsPound)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', LSHIFT(Key_Quote)) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', LSHIFT(Key_4)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', LSHIFT(Key_LeftBracket)) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', LSHIFT(Key_Semicolon)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_agrave, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_3)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_Quote)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, LSHIFT(Key_4)) \ + OP(XKB_KEY_cent, RALT(Key_8)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Minus)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, Key_Equals) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, Key_NonUsPound) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_egrave, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_1)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ch { +namespace de_sundeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace de_sundeadkeys +} // namespace ch +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ch/fr/keymap.h b/src/kaleidoscope/host_keymap/linux/ch/fr/keymap.h new file mode 100644 index 0000000000..4e1751f72f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ch/fr/keymap.h @@ -0,0 +1,576 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ch +// variant: fr + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_RightBracket)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_NonUsPound) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_RightBracket)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_NonUsPound) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_8)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_NonUsPound)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_Quote) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ä', LSHIFT(Key_Quote)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', LSHIFT(Key_4)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_LeftBracket) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_Semicolon) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', LSHIFT(Key_Semicolon)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ü', LSHIFT(Key_LeftBracket)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_agrave, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_3)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_Quote)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, LSHIFT(Key_4)) \ + OP(XKB_KEY_cent, RALT(Key_8)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Minus)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, Key_Equals) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, Key_NonUsPound) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Semicolon) \ + OP(XKB_KEY_egrave, Key_LeftBracket) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_1)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ch { +namespace fr { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace fr +} // namespace ch +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ch/fr_mac/keymap.h b/src/kaleidoscope/host_keymap/linux/ch/fr_mac/keymap.h new file mode 100644 index 0000000000..4412be64f9 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ch/fr_mac/keymap.h @@ -0,0 +1,598 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ch +// variant: fr_mac + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_RightBracket)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_NonUsPound) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_G)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(LSHIFT(Key_7))) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_6)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_Equals))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_RightBracket)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_8)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_7)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_9)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_RightBracket)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_NonUsPound) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_G)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(LSHIFT(Key_7))) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_6)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_Equals))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_RightBracket)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_8)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_7)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_9)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_I)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_Semicolon)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_NonUsPound)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(Key_Z)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_H)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Comma)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_L)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'­', RALT(Key_Slash)) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_K))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', RALT(Key_U)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_1)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_NonUsPound)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_H))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(Key_J)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_Comma))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_Minus)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_W))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Å', RALT(LSHIFT(Key_A))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Quote))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(Key_4)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', RALT(LSHIFT(Key_R))) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'Ë', RALT(LSHIFT(Key_E))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Í', RALT(LSHIFT(Key_Y))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Î', RALT(LSHIFT(Key_T))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ò', RALT(LSHIFT(Key_8))) /* U+00d2, XKB_KEY_Ograve, LATIN CAPITAL LETTER O WITH GRAVE */ \ + OP(L'Ô', RALT(LSHIFT(Key_9))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ù', RALT(LSHIFT(Key_U))) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'Ú', RALT(LSHIFT(Key_0))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_Quote) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ä', LSHIFT(Key_Quote)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', RALT(Key_A)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'ç', LSHIFT(Key_4)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_LeftBracket) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_Semicolon) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ð', RALT(LSHIFT(Key_J))) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', LSHIFT(Key_Semicolon)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', LSHIFT(Key_LeftBracket)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'ÿ', RALT(LSHIFT(Key_LeftBracket))) /* U+00ff, XKB_KEY_ydiaeresis, LATIN SMALL LETTER Y WITH DIAERESIS */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Œ', RALT(LSHIFT(Key_Q))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_Q)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ÿ', RALT(LSHIFT(Key_Z))) /* U+0178, XKB_KEY_Ydiaeresis, LATIN CAPITAL LETTER Y WITH DIAERESIS */ \ + OP(L'ƒ', RALT(Key_F)) /* U+0192, XKB_KEY_function, LATIN SMALL LETTER F WITH HOOK */ \ + OP(L'˘', RALT(LSHIFT(Key_Semicolon))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'Δ', RALT(Key_K)) /* U+0394, XKB_KEY_Greek_DELTA, GREEK CAPITAL LETTER DELTA */ \ + OP(L'Π', RALT(LSHIFT(Key_P))) /* U+03a0, XKB_KEY_Greek_PI, GREEK CAPITAL LETTER PI */ \ + OP(L'Σ', RALT(Key_W)) /* U+03a3, XKB_KEY_Greek_SIGMA, GREEK CAPITAL LETTER SIGMA */ \ + OP(L'Ω', RALT(Key_Y)) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'π', RALT(Key_P)) /* U+03c0, XKB_KEY_Greek_pi, GREEK SMALL LETTER PI */ \ + OP(L'σ', RALT(Key_D)) /* U+03c3, XKB_KEY_Greek_sigma, GREEK SMALL LETTER SIGMA */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', RALT(Key_2)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_2))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'†', RALT(Key_T)) /* U+2020, XKB_KEY_dagger, DAGGER */ \ + OP(L'‡', RALT(LSHIFT(Key_F))) /* U+2021, XKB_KEY_doubledagger, DOUBLE DAGGER */ \ + OP(L'•', RALT(LSHIFT(Key_NonUsPound))) /* U+2022, XKB_KEY_enfilledcircbullet, BULLET */ \ + OP(L'…', RALT(Key_Period)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‸', RALT(LSHIFT(Key_L))) /* U+2038, XKB_KEY_caret, CARET */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_X))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'√', RALT(Key_V)) /* U+221a, XKB_KEY_radical, SQUARE ROOT */ \ + OP(L'∞', RALT(LSHIFT(Key_1))) /* U+221e, XKB_KEY_infinity, INFINITY */ \ + OP(L'∫', RALT(Key_B)) /* U+222b, XKB_KEY_integral, INTEGRAL */ \ + OP(L'≃', RALT(Key_X)) /* U+2243, XKB_KEY_similarequal, ASYMPTOTICALLY EQUAL TO */ \ + OP(L'≠', RALT(Key_0)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'≤', RALT(Key_NonUsBackslashAndPipe)) /* U+2264, XKB_KEY_lessthanequal, LESS-THAN OR EQUAL TO */ \ + OP(L'≥', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+2265, XKB_KEY_greaterthanequal, GREATER-THAN OR EQUAL TO */ \ + OP(L'◦', RALT(LSHIFT(Key_N))) /* U+25e6, XKB_KEY_enopencircbullet, WHITE BULLET */ \ + OP(L'♦', RALT(LSHIFT(Key_V))) /* U+2666, XKB_KEY_diamond, BLACK DIAMOND SUIT */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(Key_4)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Egrave, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_DELTA, RALT(Key_K)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(Key_Y)) \ + OP(XKB_KEY_Greek_PI, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Greek_SIGMA, RALT(Key_W)) \ + OP(XKB_KEY_Greek_pi, RALT(Key_P)) \ + OP(XKB_KEY_Greek_sigma, RALT(Key_D)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_Ograve, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_Ugrave, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Ydiaeresis, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_agrave, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_A)) \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_3)) \ + OP(XKB_KEY_at, RALT(Key_G)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_bar, RALT(Key_7)) \ + OP(XKB_KEY_braceleft, RALT(Key_8)) \ + OP(XKB_KEY_braceright, RALT(Key_9)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_6)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caret, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_ccedilla, LSHIFT(Key_4)) \ + OP(XKB_KEY_cent, RALT(Key_Semicolon)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dagger, RALT(Key_T)) \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_M))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Equals)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, Key_Equals) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_N)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_U)) \ + OP(XKB_KEY_diamond, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, Key_NonUsPound) \ + OP(XKB_KEY_doubledagger, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Semicolon) \ + OP(XKB_KEY_egrave, Key_LeftBracket) \ + OP(XKB_KEY_ellipsis, RALT(Key_Period)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_enfilledcircbullet, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_enopencircbullet, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_exclam, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_exclamdown, RALT(Key_I)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_function, RALT(Key_F)) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_RightBracket)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_greaterthanequal, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Comma)) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hyphen, RALT(Key_Slash)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_infinity, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_integral, RALT(Key_B)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftcaret, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_2)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lessthanequal, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_masculine, RALT(Key_J)) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notequal, RALT(Key_0)) \ + OP(XKB_KEY_notsign, RALT(Key_L)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_oe, RALT(Key_Q)) \ + OP(XKB_KEY_ordfeminine, RALT(Key_H)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_plus, LSHIFT(Key_1)) \ + OP(XKB_KEY_plusminus, RALT(Key_1)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_radical, RALT(Key_V)) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_similarequal, RALT(Key_X)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_ydiaeresis, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_yen, RALT(Key_Z)) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ch { +namespace fr_mac { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace fr_mac +} // namespace ch +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ch/fr_nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/ch/fr_nodeadkeys/keymap.h new file mode 100644 index 0000000000..448336dd8f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ch/fr_nodeadkeys/keymap.h @@ -0,0 +1,585 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ch +// variant: fr_nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_RightBracket)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_NonUsPound) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_Equals) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_RightBracket)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_NonUsPound) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_Equals) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_8)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_NonUsPound)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', Key_RightBracket) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'´', RALT(Key_Minus)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_Quote) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ä', LSHIFT(Key_Quote)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', LSHIFT(Key_4)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_LeftBracket) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_Semicolon) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', LSHIFT(Key_Semicolon)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ü', LSHIFT(Key_LeftBracket)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, RALT(Key_Minus)) \ + OP(XKB_KEY_adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_agrave, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_Equals) \ + OP(XKB_KEY_asciitilde, RALT(Key_Equals)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_3)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_Quote)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, LSHIFT(Key_4)) \ + OP(XKB_KEY_cent, RALT(Key_8)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_diaeresis, Key_RightBracket) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, Key_NonUsPound) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Semicolon) \ + OP(XKB_KEY_egrave, Key_LeftBracket) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_1)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ch { +namespace fr_nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace fr_nodeadkeys +} // namespace ch +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ch/fr_sundeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/ch/fr_sundeadkeys/keymap.h new file mode 100644 index 0000000000..029824a8e5 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ch/fr_sundeadkeys/keymap.h @@ -0,0 +1,576 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ch +// variant: fr_sundeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_RightBracket)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_NonUsPound) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_RightBracket)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_NonUsPound) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_8)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_NonUsPound)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_Quote) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ä', LSHIFT(Key_Quote)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', LSHIFT(Key_4)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_LeftBracket) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_Semicolon) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', LSHIFT(Key_Semicolon)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ü', LSHIFT(Key_LeftBracket)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_agrave, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_3)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_Quote)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, LSHIFT(Key_4)) \ + OP(XKB_KEY_cent, RALT(Key_8)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Minus)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, Key_Equals) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, Key_NonUsPound) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Semicolon) \ + OP(XKB_KEY_egrave, Key_LeftBracket) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_1)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ch { +namespace fr_sundeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace fr_sundeadkeys +} // namespace ch +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ch/legacy/keymap.h b/src/kaleidoscope/host_keymap/linux/ch/legacy/keymap.h new file mode 100644 index 0000000000..f8796dd684 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ch/legacy/keymap.h @@ -0,0 +1,576 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ch +// variant: legacy + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_RightBracket)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_NonUsPound) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_RightBracket)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_NonUsPound) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_8)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_NonUsPound)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(Key_7)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', LSHIFT(Key_Quote)) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', LSHIFT(Key_4)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', LSHIFT(Key_LeftBracket)) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', LSHIFT(Key_Semicolon)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_agrave, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_3)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_Quote)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(Key_7)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, LSHIFT(Key_4)) \ + OP(XKB_KEY_cent, RALT(Key_8)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Minus)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, Key_Equals) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, Key_NonUsPound) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_egrave, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_1)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ch { +namespace legacy { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace legacy +} // namespace ch +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ch/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/ch/standard/keymap.h new file mode 100644 index 0000000000..3c439fcc63 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ch/standard/keymap.h @@ -0,0 +1,576 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ch +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_RightBracket)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_NonUsPound) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_RightBracket)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_NonUsPound) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_8)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_NonUsPound)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', LSHIFT(Key_Quote)) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', LSHIFT(Key_4)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', LSHIFT(Key_LeftBracket)) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', LSHIFT(Key_Semicolon)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_agrave, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_3)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_Quote)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, LSHIFT(Key_4)) \ + OP(XKB_KEY_cent, RALT(Key_8)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Minus)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, Key_Equals) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, Key_NonUsPound) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_egrave, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_1)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ch { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace ch +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ch/sun_type6_de/keymap.h b/src/kaleidoscope/host_keymap/linux/ch/sun_type6_de/keymap.h new file mode 100644 index 0000000000..ade7068b51 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ch/sun_type6_de/keymap.h @@ -0,0 +1,471 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ch +// variant: sun_type6_de + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_RightBracket)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_NonUsPound) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_4)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_0)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_5)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_RightBracket)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_NonUsPound) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_4)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_0)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_5)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_8)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_NonUsPound)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(Key_7)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'à', LSHIFT(Key_Quote)) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'ç', LSHIFT(Key_4)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', LSHIFT(Key_LeftBracket)) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', LSHIFT(Key_Semicolon)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_agrave, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_4)) \ + OP(XKB_KEY_asciitilde, RALT(Key_5)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_3)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_Quote)) \ + OP(XKB_KEY_braceright, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(Key_7)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, LSHIFT(Key_4)) \ + OP(XKB_KEY_cent, RALT(Key_8)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, RALT(Key_Minus)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, Key_Equals) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_dollar, Key_NonUsPound) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_egrave, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_0)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_1)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ch { +namespace sun_type6_de { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6_de +} // namespace ch +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ch/sun_type6_fr/keymap.h b/src/kaleidoscope/host_keymap/linux/ch/sun_type6_fr/keymap.h new file mode 100644 index 0000000000..bcb48a40ec --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ch/sun_type6_fr/keymap.h @@ -0,0 +1,471 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ch +// variant: sun_type6_fr + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_RightBracket)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_NonUsPound) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_4)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_0)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_5)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_RightBracket)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_NonUsPound) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_4)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_0)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_5)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_8)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_NonUsPound)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(Key_7)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'à', Key_Quote) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ä', LSHIFT(Key_Quote)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'ç', LSHIFT(Key_4)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_LeftBracket) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_Semicolon) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ö', LSHIFT(Key_Semicolon)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ü', LSHIFT(Key_LeftBracket)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_agrave, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_4)) \ + OP(XKB_KEY_asciitilde, RALT(Key_5)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_3)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_Quote)) \ + OP(XKB_KEY_braceright, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(Key_7)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, LSHIFT(Key_4)) \ + OP(XKB_KEY_cent, RALT(Key_8)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, RALT(Key_Minus)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, Key_Equals) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_dollar, Key_NonUsPound) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Semicolon) \ + OP(XKB_KEY_egrave, Key_LeftBracket) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_0)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_1)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ch { +namespace sun_type6_fr { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6_fr +} // namespace ch +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/cm/azerty/keymap.h b/src/kaleidoscope/host_keymap/linux/cm/azerty/keymap.h new file mode 100644 index 0000000000..3df533c2b3 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/cm/azerty/keymap.h @@ -0,0 +1,543 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: cm +// variant: azerty + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', RALT(Key_Slash)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(LSHIFT(Key_5))) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_Backtick) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_3)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_9)) /* XKB_KEY_KP_9 */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', RALT(Key_Slash)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(LSHIFT(Key_5))) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_Backtick) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_3)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_9)) /* XKB_KEY_KP_9 */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', RALT(LSHIFT(Key_L))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_NonUsPound))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_NonUsBackslashAndPipe)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Equals))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_Backtick)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_Backtick))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(LSHIFT(Key_Semicolon))) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_F))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(LSHIFT(Key_M))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_P))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'æ', RALT(Key_F)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ø', RALT(Key_P)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', RALT(Key_Semicolon)) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_N))) \ + OP(L'ŋ', RALT(Key_N)) \ + OP(L'Œ', RALT(LSHIFT(Key_T))) \ + OP(L'œ', RALT(Key_T)) \ + OP(L'Ɓ', RALT(LSHIFT(Key_B))) \ + OP(L'Ɔ', RALT(LSHIFT(Key_O))) \ + OP(L'Ɗ', RALT(LSHIFT(Key_D))) \ + OP(L'Ə', RALT(LSHIFT(Key_E))) /* U+018f, XKB_KEY_SCHWA, LATIN CAPITAL LETTER SCHWA */ \ + OP(L'Ɛ', RALT(LSHIFT(Key_Q))) \ + OP(L'Ɨ', RALT(LSHIFT(Key_I))) \ + OP(L'Ƴ', RALT(LSHIFT(Key_Y))) \ + OP(L'ƴ', RALT(Key_Y)) \ + OP(L'Ʉ', RALT(LSHIFT(Key_U))) \ + OP(L'ɑ', RALT(Key_H)) \ + OP(L'ɓ', RALT(Key_B)) \ + OP(L'ɔ', RALT(Key_O)) \ + OP(L'ɗ', RALT(Key_D)) \ + OP(L'ə', RALT(Key_E)) /* U+0259, XKB_KEY_schwa, LATIN SMALL LETTER SCHWA */ \ + OP(L'ɛ', RALT(Key_Q)) \ + OP(L'ɨ', RALT(Key_I)) \ + OP(L'ʉ', RALT(Key_U)) \ + OP(L'ʼ', RALT(Key_G)) \ + OP(L'̀', Key_Quote) \ + OP(L'́', Key_LeftBracket) \ + OP(L'̂', LSHIFT(Key_Quote)) \ + OP(L'̃', LSHIFT(Key_RightBracket)) \ + OP(L'̄', RALT(Key_RightBracket)) \ + OP(L'̌', LSHIFT(Key_LeftBracket)) \ + OP(L'̍', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'̣', RALT(Key_Period)) \ + OP(L'̧', RALT(Key_C)) \ + OP(L'̰', Key_RightBracket) \ + OP(L'᷄', RALT(LSHIFT(Key_Quote))) \ + OP(L'᷅', RALT(Key_Quote)) \ + OP(L'᷆', Key_NonUsPound) \ + OP(L'᷇', LSHIFT(Key_NonUsPound)) \ + OP(L'Ẅ', RALT(LSHIFT(Key_Z))) /* U+1e84, XKB_KEY_Wdiaeresis, LATIN CAPITAL LETTER W WITH DIAERESIS */ \ + OP(L'ẅ', RALT(Key_Z)) /* U+1e85, XKB_KEY_wdiaeresis, LATIN SMALL LETTER W WITH DIAERESIS */ \ + OP(L'–', RALT(LSHIFT(Key_A))) \ + OP(L'—', RALT(Key_A)) \ + OP(L'‘', RALT(LSHIFT(Key_1))) \ + OP(L'’', RALT(LSHIFT(Key_2))) \ + OP(L'“', RALT(Key_S)) \ + OP(L'”', RALT(LSHIFT(Key_S))) \ + OP(L'†', RALT(LSHIFT(Key_W))) \ + OP(L'…', RALT(Key_W)) \ + OP(L'‹', RALT(Key_X)) \ + OP(L'›', RALT(LSHIFT(Key_X))) \ + OP(L'€', LSHIFT(Key_Backtick)) \ + OP(L'⃖', RALT(LSHIFT(Key_8))) \ + OP(L'⃗', RALT(LSHIFT(Key_0))) \ + OP(L'™', RALT(LSHIFT(Key_J))) \ + OP(L'←', RALT(Key_J)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_K))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_L)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_K)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'◌', RALT(Key_R)) \ + OP(L'Ɑ', RALT(LSHIFT(Key_H))) \ + OP(L'Ꞌ', RALT(LSHIFT(Key_G))) \ + OP(L'ꞌ', RALT(Key_V)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Latch, Key_Slash) /* XKB_KEY_ISO_Level3_Latch */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_SCHWA, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Wdiaeresis, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_ae, RALT(Key_F)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, RALT(Key_Comma)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_LeftBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_Comma))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_dollar, Key_Backtick) \ + OP(XKB_KEY_downarrow, RALT(Key_K)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, RALT(Key_Slash)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_J)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_oslash, RALT(Key_P)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, RALT(Key_3)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_L)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_schwa, RALT(Key_E)) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_twosuperior, RALT(Key_Backtick)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, RALT(Key_Semicolon)) \ + OP(XKB_KEY_underscore, Key_8) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_wdiaeresis, RALT(Key_Z)) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace cm { +namespace azerty { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace azerty +} // namespace cm +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/cm/dvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/cm/dvorak/keymap.h new file mode 100644 index 0000000000..b7aa950a02 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/cm/dvorak/keymap.h @@ -0,0 +1,524 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: cm +// variant: dvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(LSHIFT(Key_Q))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Q)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* XKB_KEY_KP_0 */ \ + OP('1', Key_1) /* XKB_KEY_KP_1 */ \ + OP('2', Key_2) /* XKB_KEY_KP_2 */ \ + OP('3', Key_3) /* XKB_KEY_KP_3 */ \ + OP('4', Key_4) /* XKB_KEY_KP_4 */ \ + OP('5', Key_5) /* XKB_KEY_KP_5 */ \ + OP('6', Key_6) /* XKB_KEY_KP_6 */ \ + OP('7', Key_7) /* XKB_KEY_KP_7 */ \ + OP('8', Key_8) /* XKB_KEY_KP_8 */ \ + OP('9', Key_9) /* XKB_KEY_KP_9 */ \ + OP(':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Z)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_Minus)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Equals)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(LSHIFT(Key_Minus))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(LSHIFT(Key_Equals))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(LSHIFT(Key_Q))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Q)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* XKB_KEY_KP_0 */ \ + OP(L'1', Key_1) /* XKB_KEY_KP_1 */ \ + OP(L'2', Key_2) /* XKB_KEY_KP_2 */ \ + OP(L'3', Key_3) /* XKB_KEY_KP_3 */ \ + OP(L'4', Key_4) /* XKB_KEY_KP_4 */ \ + OP(L'5', Key_5) /* XKB_KEY_KP_5 */ \ + OP(L'6', Key_6) /* XKB_KEY_KP_6 */ \ + OP(L'7', Key_7) /* XKB_KEY_KP_7 */ \ + OP(L'8', Key_8) /* XKB_KEY_KP_8 */ \ + OP(L'9', Key_9) /* XKB_KEY_KP_9 */ \ + OP(L':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Z)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_Minus)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Equals)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(LSHIFT(Key_Minus))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(LSHIFT(Key_Equals))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'©', RALT(LSHIFT(Key_I))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(LSHIFT(Key_W))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(LSHIFT(Key_O))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_RightBracket))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'»', RALT(LSHIFT(Key_E))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_1)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_2)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_3)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'Æ', RALT(LSHIFT(Key_Y))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(LSHIFT(Key_8))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_R))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'æ', RALT(Key_Y)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_R)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_L))) \ + OP(L'ŋ', RALT(Key_L)) \ + OP(L'Œ', RALT(LSHIFT(Key_K))) \ + OP(L'œ', RALT(Key_K)) \ + OP(L'Ɓ', RALT(LSHIFT(Key_N))) \ + OP(L'Ɔ', RALT(LSHIFT(Key_S))) \ + OP(L'Ɗ', RALT(LSHIFT(Key_H))) \ + OP(L'Ə', RALT(LSHIFT(Key_D))) /* U+018f, XKB_KEY_SCHWA, LATIN CAPITAL LETTER SCHWA */ \ + OP(L'Ɛ', RALT(LSHIFT(Key_A))) \ + OP(L'Ɨ', RALT(LSHIFT(Key_G))) \ + OP(L'Ƴ', RALT(LSHIFT(Key_T))) \ + OP(L'ƴ', RALT(Key_T)) \ + OP(L'Ʉ', RALT(LSHIFT(Key_F))) \ + OP(L'ɑ', RALT(Key_J)) \ + OP(L'ɓ', RALT(Key_N)) \ + OP(L'ɔ', RALT(Key_S)) \ + OP(L'ɗ', RALT(Key_H)) \ + OP(L'ə', RALT(Key_D)) /* U+0259, XKB_KEY_schwa, LATIN SMALL LETTER SCHWA */ \ + OP(L'ɛ', RALT(Key_A)) \ + OP(L'ɨ', RALT(Key_G)) \ + OP(L'ʉ', RALT(Key_F)) \ + OP(L'ʔ', RALT(LSHIFT(Key_LeftBracket))) \ + OP(L'ʼ', RALT(Key_U)) \ + OP(L'̀', Key_Q) \ + OP(L'́', Key_Minus) \ + OP(L'̂', LSHIFT(Key_Q)) \ + OP(L'̃', LSHIFT(Key_Backtick)) \ + OP(L'̄', RALT(Key_Quote)) \ + OP(L'̌', LSHIFT(Key_Minus)) \ + OP(L'̍', Key_Backtick) \ + OP(L'̣', RALT(LSHIFT(Key_C))) \ + OP(L'̧', Key_Equals) \ + OP(L'̰', RALT(Key_C)) \ + OP(L'᷄', RALT(LSHIFT(Key_P))) \ + OP(L'᷅', RALT(Key_V)) \ + OP(L'᷆', RALT(Key_P)) \ + OP(L'᷇', RALT(LSHIFT(Key_V))) \ + OP(L'Ẅ', RALT(LSHIFT(Key_Comma))) /* U+1e84, XKB_KEY_Wdiaeresis, LATIN CAPITAL LETTER W WITH DIAERESIS */ \ + OP(L'ẅ', RALT(Key_Comma)) /* U+1e85, XKB_KEY_wdiaeresis, LATIN SMALL LETTER W WITH DIAERESIS */ \ + OP(L'–', RALT(LSHIFT(Key_X))) \ + OP(L'—', RALT(Key_X)) \ + OP(L'‘', RALT(Key_9)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_0)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_9))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_0))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'†', RALT(LSHIFT(Key_Slash))) \ + OP(L'…', RALT(Key_Slash)) \ + OP(L'‹', RALT(Key_W)) \ + OP(L'›', RALT(Key_E)) \ + OP(L'€', RALT(LSHIFT(Key_4))) \ + OP(L'™', RALT(LSHIFT(Key_M))) \ + OP(L'◌', RALT(Key_O)) \ + OP(L'Ɑ', RALT(LSHIFT(Key_J))) \ + OP(L'Ꞌ', RALT(LSHIFT(Key_U))) \ + OP(L'ꞌ', RALT(Key_Period)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Latch, Key_Z) /* XKB_KEY_ISO_Level3_Latch */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, Key_0) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, Key_1) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, Key_2) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, Key_3) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, Key_4) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, Key_5) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, Key_6) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, Key_7) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, Key_8) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, Key_9) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_SCHWA, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Wdiaeresis, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_Y)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Q)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_braceright, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_bracketleft, RALT(Key_Minus)) \ + OP(XKB_KEY_bracketright, RALT(Key_Equals)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_colon, LSHIFT(Key_Z)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_Equals)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_9)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_onehalf, RALT(Key_2)) \ + OP(XKB_KEY_onequarter, RALT(Key_1)) \ + OP(XKB_KEY_oslash, RALT(Key_R)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_plus, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_quotedbl, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_0)) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_schwa, RALT(Key_D)) \ + OP(XKB_KEY_semicolon, RALT(Key_Z)) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_threequarters, RALT(Key_3)) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_wdiaeresis, RALT(Key_Comma)) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace cm { +namespace dvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak +} // namespace cm +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/cm/french/keymap.h b/src/kaleidoscope/host_keymap/linux/cm/french/keymap.h new file mode 100644 index 0000000000..64c8f2a460 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/cm/french/keymap.h @@ -0,0 +1,582 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: cm +// variant: french + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_RightBracket)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_W)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'µ', RALT(Key_Semicolon)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_Semicolon))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_Q))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'æ', RALT(Key_Q)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_A))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_ae, RALT(Key_Q)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_RightBracket)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_M)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_M))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_W)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, RALT(Key_Semicolon)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, Key_8) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace cm { +namespace french { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace french +} // namespace cm +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/cm/mmuock/keymap.h b/src/kaleidoscope/host_keymap/linux/cm/mmuock/keymap.h new file mode 100644 index 0000000000..a41c249165 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/cm/mmuock/keymap.h @@ -0,0 +1,512 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: cm +// variant: mmuock + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', RALT(LSHIFT(Key_Semicolon))) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', RALT(LSHIFT(Key_H))) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', RALT(LSHIFT(Key_R))) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', RALT(Key_H)) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', RALT(Key_R)) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', RALT(LSHIFT(Key_Semicolon))) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', RALT(LSHIFT(Key_H))) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', RALT(LSHIFT(Key_R))) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', RALT(Key_H)) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', RALT(Key_R)) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_Comma)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', RALT(Key_Period)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Æ', LSHIFT(Key_NonUsPound)) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ø', LSHIFT(Key_LeftBracket)) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'æ', Key_NonUsPound) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ø', Key_LeftBracket) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_N))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_N)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', LSHIFT(Key_Semicolon)) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', Key_Semicolon) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Š', LSHIFT(Key_R)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_R) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ǝ', RALT(LSHIFT(Key_E))) \ + OP(L'Ɛ', RALT(LSHIFT(Key_I))) \ + OP(L'ǝ', RALT(Key_E)) \ + OP(L'Dz', RALT(LSHIFT(Key_Z))) \ + OP(L'dz', RALT(Key_Z)) \ + OP(L'ɛ', RALT(Key_I)) \ + OP(L'̀', RALT(Key_F)) \ + OP(L'́', RALT(Key_D)) \ + OP(L'̂', RALT(Key_6)) \ + OP(L'̃', RALT(Key_A)) \ + OP(L'̄', RALT(Key_S)) \ + OP(L'̆', RALT(Key_J)) \ + OP(L'̇', RALT(Key_9)) \ + OP(L'̈', RALT(Key_L)) \ + OP(L'̊', RALT(Key_0)) \ + OP(L'̋', RALT(Key_Equals)) \ + OP(L'̌', RALT(Key_G)) \ + OP(L'̍', RALT(Key_8)) \ + OP(L'̏', RALT(Key_K)) \ + OP(L'̑', RALT(Key_7)) \ + OP(L'̣', Key_H) \ + OP(L'Π', RALT(LSHIFT(Key_P))) /* U+03a0, XKB_KEY_Greek_PI, GREEK CAPITAL LETTER PI */ \ + OP(L'Σ', LSHIFT(Key_RightBracket)) /* U+03a3, XKB_KEY_Greek_SIGMA, GREEK CAPITAL LETTER SIGMA */ \ + OP(L'Φ', RALT(LSHIFT(Key_O))) /* U+03a6, XKB_KEY_Greek_PHI, GREEK CAPITAL LETTER PHI */ \ + OP(L'Ω', RALT(LSHIFT(Key_U))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'π', RALT(Key_P)) /* U+03c0, XKB_KEY_Greek_pi, GREEK SMALL LETTER PI */ \ + OP(L'σ', Key_RightBracket) /* U+03c3, XKB_KEY_Greek_sigma, GREEK SMALL LETTER SIGMA */ \ + OP(L'φ', RALT(Key_O)) /* U+03c6, XKB_KEY_Greek_phi, GREEK SMALL LETTER PHI */ \ + OP(L'ω', RALT(Key_U)) /* U+03c9, XKB_KEY_Greek_omega, GREEK SMALL LETTER OMEGA */ \ + OP(L'–', RALT(LSHIFT(Key_Minus))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‹', RALT(LSHIFT(Key_Comma))) \ + OP(L'›', RALT(LSHIFT(Key_Period))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Greek_PHI, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Greek_PI, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Greek_SIGMA, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Greek_omega, RALT(Key_U)) \ + OP(XKB_KEY_Greek_phi, RALT(Key_O)) \ + OP(XKB_KEY_Greek_pi, RALT(Key_P)) \ + OP(XKB_KEY_Greek_sigma, Key_RightBracket) \ + OP(XKB_KEY_H, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Latch, Key_Slash) /* XKB_KEY_ISO_Level3_Latch */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_R)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, Key_NonUsPound) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_braceright, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_grave, Key_Backtick) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, Key_Minus) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_eng, RALT(Key_N)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Comma)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Period)) \ + OP(XKB_KEY_h, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, RALT(Key_Minus)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oe, Key_Semicolon) \ + OP(XKB_KEY_oslash, Key_LeftBracket) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, RALT(Key_R)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_R) \ + OP(XKB_KEY_semicolon, RALT(Key_Semicolon)) \ + OP(XKB_KEY_slash, RALT(Key_Slash)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace cm { +namespace mmuock { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mmuock +} // namespace cm +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/cm/qwerty/keymap.h b/src/kaleidoscope/host_keymap/linux/cm/qwerty/keymap.h new file mode 100644 index 0000000000..778cd11911 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/cm/qwerty/keymap.h @@ -0,0 +1,528 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: cm +// variant: qwerty + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(LSHIFT(Key_Comma))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Equals))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'»', RALT(LSHIFT(Key_Period))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_1)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_2)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_3)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'Æ', RALT(LSHIFT(Key_F))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(LSHIFT(Key_8))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_P))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'æ', RALT(Key_F)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'÷', RALT(Key_Slash)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_P)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_N))) \ + OP(L'ŋ', RALT(Key_N)) \ + OP(L'Œ', RALT(LSHIFT(Key_T))) \ + OP(L'œ', RALT(Key_T)) \ + OP(L'Ɓ', RALT(LSHIFT(Key_B))) \ + OP(L'Ɔ', RALT(LSHIFT(Key_O))) \ + OP(L'Ɗ', RALT(LSHIFT(Key_D))) \ + OP(L'Ə', RALT(LSHIFT(Key_E))) /* U+018f, XKB_KEY_SCHWA, LATIN CAPITAL LETTER SCHWA */ \ + OP(L'Ɛ', RALT(LSHIFT(Key_A))) \ + OP(L'Ɨ', RALT(LSHIFT(Key_I))) \ + OP(L'Ƴ', RALT(LSHIFT(Key_Y))) \ + OP(L'ƴ', RALT(Key_Y)) \ + OP(L'Ʉ', RALT(LSHIFT(Key_U))) \ + OP(L'ɑ', RALT(Key_H)) \ + OP(L'ɓ', RALT(Key_B)) \ + OP(L'ɔ', RALT(Key_O)) \ + OP(L'ɗ', RALT(Key_D)) \ + OP(L'ə', RALT(Key_E)) /* U+0259, XKB_KEY_schwa, LATIN SMALL LETTER SCHWA */ \ + OP(L'ɛ', RALT(Key_A)) \ + OP(L'ɨ', RALT(Key_I)) \ + OP(L'ʉ', RALT(Key_U)) \ + OP(L'ʼ', RALT(Key_G)) \ + OP(L'̀', Key_Quote) \ + OP(L'́', Key_LeftBracket) \ + OP(L'̂', LSHIFT(Key_Quote)) \ + OP(L'̃', LSHIFT(Key_Backtick)) \ + OP(L'̄', RALT(Key_Minus)) \ + OP(L'̈', LSHIFT(Key_RightBracket)) \ + OP(L'̌', LSHIFT(Key_LeftBracket)) \ + OP(L'̍', Key_Backtick) \ + OP(L'̣', RALT(LSHIFT(Key_J))) \ + OP(L'̧', Key_RightBracket) \ + OP(L'̰', RALT(Key_J)) \ + OP(L'᷄', RALT(LSHIFT(Key_L))) \ + OP(L'᷅', RALT(Key_K)) \ + OP(L'᷆', RALT(Key_L)) \ + OP(L'᷇', RALT(LSHIFT(Key_K))) \ + OP(L'Ẅ', RALT(LSHIFT(Key_W))) /* U+1e84, XKB_KEY_Wdiaeresis, LATIN CAPITAL LETTER W WITH DIAERESIS */ \ + OP(L'ẅ', RALT(Key_W)) /* U+1e85, XKB_KEY_wdiaeresis, LATIN SMALL LETTER W WITH DIAERESIS */ \ + OP(L'–', RALT(LSHIFT(Key_Q))) \ + OP(L'—', RALT(Key_Q)) \ + OP(L'‘', RALT(Key_9)) \ + OP(L'’', RALT(Key_0)) \ + OP(L'“', RALT(LSHIFT(Key_9))) \ + OP(L'”', RALT(LSHIFT(Key_0))) \ + OP(L'†', RALT(LSHIFT(Key_Z))) \ + OP(L'…', RALT(Key_Z)) \ + OP(L'‹', RALT(Key_Comma)) \ + OP(L'›', RALT(Key_Period)) \ + OP(L'€', RALT(LSHIFT(Key_4))) \ + OP(L'™', RALT(LSHIFT(Key_M))) \ + OP(L'◌', RALT(Key_R)) \ + OP(L'Ɑ', RALT(LSHIFT(Key_H))) \ + OP(L'Ꞌ', RALT(LSHIFT(Key_G))) \ + OP(L'ꞌ', RALT(Key_V)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Latch, Key_Semicolon) /* XKB_KEY_ISO_Level3_Latch */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_SCHWA, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_Wdiaeresis, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_F)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_braceright, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_division, RALT(Key_Slash)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_onehalf, RALT(Key_2)) \ + OP(XKB_KEY_onequarter, RALT(Key_1)) \ + OP(XKB_KEY_oslash, RALT(Key_P)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_schwa, RALT(Key_E)) \ + OP(XKB_KEY_semicolon, RALT(Key_Semicolon)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threequarters, RALT(Key_3)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_wdiaeresis, RALT(Key_W)) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace cm { +namespace qwerty { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace qwerty +} // namespace cm +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/cm/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/cm/standard/keymap.h new file mode 100644 index 0000000000..7160ac4250 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/cm/standard/keymap.h @@ -0,0 +1,439 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: cm +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace cm { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace cm +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/cn/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/cn/standard/keymap.h new file mode 100644 index 0000000000..9b2b6b2a56 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/cn/standard/keymap.h @@ -0,0 +1,439 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: cn +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace cn { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace cn +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/cn/tib/keymap.h b/src/kaleidoscope/host_keymap/linux/cn/tib/keymap.h new file mode 100644 index 0000000000..2e30efa12d --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/cn/tib/keymap.h @@ -0,0 +1,286 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: cn +// variant: tib + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'༁', LSHIFT(Key_Backtick)) \ + OP(L'༂', LSHIFT(Key_J)) \ + OP(L'༃', LSHIFT(Key_K)) \ + OP(L'༆', LSHIFT(Key_L)) \ + OP(L'༇', LSHIFT(Key_Semicolon)) \ + OP(L'་', Key_J) \ + OP(L'།', Key_Quote) \ + OP(L'༕', LSHIFT(Key_Q)) \ + OP(L'༖', LSHIFT(Key_W)) \ + OP(L'༗', LSHIFT(Key_E)) \ + OP(L'༘', LSHIFT(Key_U)) \ + OP(L'༙', LSHIFT(Key_I)) \ + OP(L'༚', LSHIFT(Key_O)) \ + OP(L'༛', LSHIFT(Key_P)) \ + OP(L'༜', LSHIFT(Key_LeftBracket)) \ + OP(L'༝', LSHIFT(Key_RightBracket)) \ + OP(L'༞', LSHIFT(Key_NonUsPound)) \ + OP(L'༟', LSHIFT(Key_S)) \ + OP(L'༠', Key_0) \ + OP(L'༡', Key_1) \ + OP(L'༢', Key_2) \ + OP(L'༣', Key_3) \ + OP(L'༤', Key_4) \ + OP(L'༥', Key_5) \ + OP(L'༦', Key_6) \ + OP(L'༧', Key_7) \ + OP(L'༨', Key_8) \ + OP(L'༩', Key_9) \ + OP(L'༪', LSHIFT(Key_1)) \ + OP(L'༫', LSHIFT(Key_2)) \ + OP(L'༬', LSHIFT(Key_3)) \ + OP(L'༭', LSHIFT(Key_4)) \ + OP(L'༮', LSHIFT(Key_5)) \ + OP(L'༯', LSHIFT(Key_6)) \ + OP(L'༰', LSHIFT(Key_7)) \ + OP(L'༱', LSHIFT(Key_8)) \ + OP(L'༲', LSHIFT(Key_9)) \ + OP(L'༳', LSHIFT(Key_0)) \ + OP(L'༴', LSHIFT(Key_Z)) \ + OP(L'༸', LSHIFT(Key_Quote)) \ + OP(L'༺', LSHIFT(Key_Period)) \ + OP(L'༻', LSHIFT(Key_Slash)) \ + OP(L'༼', LSHIFT(Key_Minus)) \ + OP(L'༽', LSHIFT(Key_Equals)) \ + OP(L'༾', LSHIFT(Key_F)) \ + OP(L'༿', LSHIFT(Key_G)) \ + OP(L'ཀ', Key_C) \ + OP(L'ཁ', Key_V) \ + OP(L'ག', Key_K) \ + OP(L'ང', Key_G) \ + OP(L'ཅ', Key_Q) \ + OP(L'ཆ', Key_W) \ + OP(L'ཇ', Key_Period) \ + OP(L'ཉ', Key_Slash) \ + OP(L'ཊ', LSHIFT(Key_T)) \ + OP(L'ཋ', LSHIFT(Key_Comma)) \ + OP(L'ཌ', LSHIFT(Key_D)) \ + OP(L'ཎ', LSHIFT(Key_N)) \ + OP(L'ཏ', Key_T) \ + OP(L'ཐ', Key_Comma) \ + OP(L'ད', Key_D) \ + OP(L'ན', Key_N) \ + OP(L'པ', Key_B) \ + OP(L'ཕ', Key_P) \ + OP(L'བ', Key_F) \ + OP(L'མ', Key_H) \ + OP(L'ཙ', Key_LeftBracket) \ + OP(L'ཚ', Key_RightBracket) \ + OP(L'ཛ', Key_NonUsPound) \ + OP(L'ཝ', Key_Equals) \ + OP(L'ཞ', Key_Semicolon) \ + OP(L'ཟ', Key_Z) \ + OP(L'འ', Key_A) \ + OP(L'ཡ', Key_Y) \ + OP(L'ར', Key_R) \ + OP(L'ལ', Key_L) \ + OP(L'ཤ', Key_X) \ + OP(L'ཥ', LSHIFT(Key_X)) \ + OP(L'ས', Key_S) \ + OP(L'ཧ', Key_Minus) \ + OP(L'ཨ', Key_Backtick) \ + OP(L'ཀྵ', LSHIFT(Key_C)) \ + OP(L'ཱ', LSHIFT(Key_A)) \ + OP(L'ི', Key_I) \ + OP(L'ུ', Key_U) \ + OP(L'ེ', Key_E) \ + OP(L'ོ', Key_O) \ + OP(L'྆', LSHIFT(Key_B)) \ + OP(L'྇', LSHIFT(Key_V)) \ + OP(L'ྻ', LSHIFT(Key_Y)) \ + OP(L'ྼ', LSHIFT(Key_R)) \ + OP(L'࿏', LSHIFT(Key_H)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Latch, Key_M) /* XKB_KEY_ISO_Level3_Latch */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace cn { +namespace tib { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace tib +} // namespace cn +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/cn/tib_asciinum/keymap.h b/src/kaleidoscope/host_keymap/linux/cn/tib_asciinum/keymap.h new file mode 100644 index 0000000000..4a7bbf84bb --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/cn/tib_asciinum/keymap.h @@ -0,0 +1,286 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: cn +// variant: tib_asciinum + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'༁', LSHIFT(Key_Backtick)) \ + OP(L'༂', LSHIFT(Key_J)) \ + OP(L'༃', LSHIFT(Key_K)) \ + OP(L'༆', LSHIFT(Key_L)) \ + OP(L'༇', LSHIFT(Key_Semicolon)) \ + OP(L'་', Key_J) \ + OP(L'།', Key_Quote) \ + OP(L'༕', LSHIFT(Key_Q)) \ + OP(L'༖', LSHIFT(Key_W)) \ + OP(L'༗', LSHIFT(Key_E)) \ + OP(L'༘', LSHIFT(Key_U)) \ + OP(L'༙', LSHIFT(Key_I)) \ + OP(L'༚', LSHIFT(Key_O)) \ + OP(L'༛', LSHIFT(Key_P)) \ + OP(L'༜', LSHIFT(Key_LeftBracket)) \ + OP(L'༝', LSHIFT(Key_RightBracket)) \ + OP(L'༞', LSHIFT(Key_NonUsPound)) \ + OP(L'༟', LSHIFT(Key_S)) \ + OP(L'༠', LSHIFT(Key_0)) \ + OP(L'༡', LSHIFT(Key_1)) \ + OP(L'༢', LSHIFT(Key_2)) \ + OP(L'༣', LSHIFT(Key_3)) \ + OP(L'༤', LSHIFT(Key_4)) \ + OP(L'༥', LSHIFT(Key_5)) \ + OP(L'༦', LSHIFT(Key_6)) \ + OP(L'༧', LSHIFT(Key_7)) \ + OP(L'༨', LSHIFT(Key_8)) \ + OP(L'༩', LSHIFT(Key_9)) \ + OP(L'༴', LSHIFT(Key_Z)) \ + OP(L'༸', LSHIFT(Key_Quote)) \ + OP(L'༺', LSHIFT(Key_Period)) \ + OP(L'༻', LSHIFT(Key_Slash)) \ + OP(L'༼', LSHIFT(Key_Minus)) \ + OP(L'༽', LSHIFT(Key_Equals)) \ + OP(L'༾', LSHIFT(Key_F)) \ + OP(L'༿', LSHIFT(Key_G)) \ + OP(L'ཀ', Key_C) \ + OP(L'ཁ', Key_V) \ + OP(L'ག', Key_K) \ + OP(L'ང', Key_G) \ + OP(L'ཅ', Key_Q) \ + OP(L'ཆ', Key_W) \ + OP(L'ཇ', Key_Period) \ + OP(L'ཉ', Key_Slash) \ + OP(L'ཊ', LSHIFT(Key_T)) \ + OP(L'ཋ', LSHIFT(Key_Comma)) \ + OP(L'ཌ', LSHIFT(Key_D)) \ + OP(L'ཎ', LSHIFT(Key_N)) \ + OP(L'ཏ', Key_T) \ + OP(L'ཐ', Key_Comma) \ + OP(L'ད', Key_D) \ + OP(L'ན', Key_N) \ + OP(L'པ', Key_B) \ + OP(L'ཕ', Key_P) \ + OP(L'བ', Key_F) \ + OP(L'མ', Key_H) \ + OP(L'ཙ', Key_LeftBracket) \ + OP(L'ཚ', Key_RightBracket) \ + OP(L'ཛ', Key_NonUsPound) \ + OP(L'ཝ', Key_Equals) \ + OP(L'ཞ', Key_Semicolon) \ + OP(L'ཟ', Key_Z) \ + OP(L'འ', Key_A) \ + OP(L'ཡ', Key_Y) \ + OP(L'ར', Key_R) \ + OP(L'ལ', Key_L) \ + OP(L'ཤ', Key_X) \ + OP(L'ཥ', LSHIFT(Key_X)) \ + OP(L'ས', Key_S) \ + OP(L'ཧ', Key_Minus) \ + OP(L'ཨ', Key_Backtick) \ + OP(L'ཀྵ', LSHIFT(Key_C)) \ + OP(L'ཱ', LSHIFT(Key_A)) \ + OP(L'ི', Key_I) \ + OP(L'ུ', Key_U) \ + OP(L'ེ', Key_E) \ + OP(L'ོ', Key_O) \ + OP(L'྆', LSHIFT(Key_B)) \ + OP(L'྇', LSHIFT(Key_V)) \ + OP(L'ྻ', LSHIFT(Key_Y)) \ + OP(L'ྼ', LSHIFT(Key_R)) \ + OP(L'࿏', LSHIFT(Key_H)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Latch, Key_M) /* XKB_KEY_ISO_Level3_Latch */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace cn { +namespace tib_asciinum { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace tib_asciinum +} // namespace cn +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/cn/ug/keymap.h b/src/kaleidoscope/host_keymap/linux/cn/ug/keymap.h new file mode 100644 index 0000000000..ca6115a4f5 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/cn/ug/keymap.h @@ -0,0 +1,315 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: cn +// variant: ug + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_LeftBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_LeftBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'«', LSHIFT(Key_RightBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', LSHIFT(Key_LeftBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'،', Key_Comma) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', Key_Semicolon) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ئ', Key_Slash) \ + OP(L'ا', Key_F) \ + OP(L'ب', Key_B) \ + OP(L'ت', Key_T) \ + OP(L'ج', LSHIFT(Key_J)) \ + OP(L'خ', LSHIFT(Key_H)) \ + OP(L'د', Key_D) \ + OP(L'ر', Key_R) \ + OP(L'ز', Key_Z) \ + OP(L'س', Key_S) \ + OP(L'ش', Key_X) \ + OP(L'غ', Key_C) \ + OP(L'ف', LSHIFT(Key_F)) \ + OP(L'ق', Key_J) \ + OP(L'ك', Key_K) \ + OP(L'ل', Key_L) \ + OP(L'م', Key_M) \ + OP(L'ن', Key_N) \ + OP(L'و', Key_O) \ + OP(L'ى', Key_H) \ + OP(L'ي', Key_Y) \ + OP(L'پ', Key_P) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', Key_Q) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ژ', LSHIFT(Key_D)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ڭ', Key_I) \ + OP(L'گ', LSHIFT(Key_G)) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'ھ', Key_A) /* U+06be, XKB_KEY_Arabic_heh_doachashmee, ARABIC LETTER HEH DOACHASHMEE */ \ + OP(L'ۆ', LSHIFT(Key_K)) \ + OP(L'ۇ', Key_U) \ + OP(L'ۈ', Key_V) \ + OP(L'ۋ', Key_W) \ + OP(L'ې', Key_E) \ + OP(L'ە', Key_G) \ + OP(L'—', LSHIFT(Key_Minus)) \ + OP(L'‹', LSHIFT(Key_Period)) \ + OP(L'›', LSHIFT(Key_Comma)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_Arabic_comma, Key_Comma) \ + OP(XKB_KEY_Arabic_gaf, LSHIFT(Key_G)) \ + OP(XKB_KEY_Arabic_heh_doachashmee, Key_A) \ + OP(XKB_KEY_Arabic_jeh, LSHIFT(Key_D)) \ + OP(XKB_KEY_Arabic_peh, Key_P) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_semicolon, Key_Semicolon) \ + OP(XKB_KEY_Arabic_tcheh, Key_Q) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_bracketleft, Key_RightBracket) \ + OP(XKB_KEY_bracketright, Key_LeftBracket) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace cn { +namespace ug { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ug +} // namespace cn +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/cz/bksl/keymap.h b/src/kaleidoscope/host_keymap/linux/cz/bksl/keymap.h new file mode 100644 index 0000000000..f42dc9890a --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/cz/bksl/keymap.h @@ -0,0 +1,544 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: cz +// variant: bksl + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', RALT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Semicolon)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_J)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_RightBracket)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_RightBracket) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_1) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Backtick) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Minus) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_H)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_9)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_A)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', RALT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Semicolon)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_J)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_RightBracket)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_RightBracket) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_1) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Backtick) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Minus) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_H)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_9)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_A)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Quote) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Z)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_RightBracket))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(LSHIFT(Key_Quote))) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_8) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'é', Key_0) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_9) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'÷', RALT(LSHIFT(Key_LeftBracket))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ú', Key_LeftBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ý', Key_7) /* U+00fd, XKB_KEY_yacute, LATIN SMALL LETTER Y WITH ACUTE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'č', Key_4) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'ě', Key_2) /* U+011b, XKB_KEY_ecaron, LATIN SMALL LETTER E WITH CARON */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ř', Key_5) /* U+0159, XKB_KEY_rcaron, LATIN SMALL LETTER R WITH CARON */ \ + OP(L'š', Key_3) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ů', Key_Semicolon) /* U+016f, XKB_KEY_uring, LATIN SMALL LETTER U WITH RING ABOVE */ \ + OP(L'ž', Key_6) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_8) \ + OP(XKB_KEY_ampersand, RALT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_J)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(Key_A)) \ + OP(XKB_KEY_asterisk, RALT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_9)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, Key_4) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_4))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, LSHIFT(Key_Equals)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Minus))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Equals)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_6))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_Z)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_0) \ + OP(XKB_KEY_ecaron, Key_2) \ + OP(XKB_KEY_equal, Key_Minus) \ + OP(XKB_KEY_exclam, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_H)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_9) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, RALT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_parenright, Key_RightBracket) \ + OP(XKB_KEY_percent, RALT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_1) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rcaron, Key_5) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_3) \ + OP(XKB_KEY_section, Key_Quote) \ + OP(XKB_KEY_semicolon, Key_Backtick) \ + OP(XKB_KEY_slash, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_uring, Key_Semicolon) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yacute, Key_7) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + OP(XKB_KEY_zcaron, Key_6) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace cz { +namespace bksl { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace bksl +} // namespace cz +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/cz/dvorak-ucw/keymap.h b/src/kaleidoscope/host_keymap/linux/cz/dvorak-ucw/keymap.h new file mode 100644 index 0000000000..99c63206de --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/cz/dvorak-ucw/keymap.h @@ -0,0 +1,512 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: cz +// variant: dvorak-ucw + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'·', RALT(LSHIFT(Key_E))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'Á', RALT(LSHIFT(Key_A))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'É', RALT(LSHIFT(Key_C))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(LSHIFT(Key_G))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ó', RALT(LSHIFT(Key_S))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ú', RALT(LSHIFT(Key_V))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ý', RALT(LSHIFT(Key_T))) /* U+00dd, XKB_KEY_Yacute, LATIN CAPITAL LETTER Y WITH ACUTE */ \ + OP(L'á', RALT(Key_A)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'é', RALT(Key_C)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', RALT(Key_G)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', RALT(Key_S)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ú', RALT(Key_V)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ý', RALT(Key_T)) /* U+00fd, XKB_KEY_yacute, LATIN SMALL LETTER Y WITH ACUTE */ \ + OP(L'Č', RALT(LSHIFT(Key_I))) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', RALT(Key_I)) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Ď', RALT(LSHIFT(Key_H))) /* U+010e, XKB_KEY_Dcaron, LATIN CAPITAL LETTER D WITH CARON */ \ + OP(L'ď', RALT(Key_H)) /* U+010f, XKB_KEY_dcaron, LATIN SMALL LETTER D WITH CARON */ \ + OP(L'Ě', RALT(LSHIFT(Key_D))) /* U+011a, XKB_KEY_Ecaron, LATIN CAPITAL LETTER E WITH CARON */ \ + OP(L'ě', RALT(Key_D)) /* U+011b, XKB_KEY_ecaron, LATIN SMALL LETTER E WITH CARON */ \ + OP(L'Ň', RALT(LSHIFT(Key_L))) /* U+0147, XKB_KEY_Ncaron, LATIN CAPITAL LETTER N WITH CARON */ \ + OP(L'ň', RALT(Key_L)) /* U+0148, XKB_KEY_ncaron, LATIN SMALL LETTER N WITH CARON */ \ + OP(L'Ř', RALT(LSHIFT(Key_O))) /* U+0158, XKB_KEY_Rcaron, LATIN CAPITAL LETTER R WITH CARON */ \ + OP(L'ř', RALT(Key_O)) /* U+0159, XKB_KEY_rcaron, LATIN SMALL LETTER R WITH CARON */ \ + OP(L'Š', RALT(LSHIFT(Key_Semicolon))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_Semicolon)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ť', RALT(LSHIFT(Key_K))) /* U+0164, XKB_KEY_Tcaron, LATIN CAPITAL LETTER T WITH CARON */ \ + OP(L'ť', RALT(Key_K)) /* U+0165, XKB_KEY_tcaron, LATIN SMALL LETTER T WITH CARON */ \ + OP(L'Ů', RALT(LSHIFT(Key_F))) /* U+016e, XKB_KEY_Uring, LATIN CAPITAL LETTER U WITH RING ABOVE */ \ + OP(L'ů', RALT(Key_F)) /* U+016f, XKB_KEY_uring, LATIN SMALL LETTER U WITH RING ABOVE */ \ + OP(L'Ž', RALT(LSHIFT(Key_Slash))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_Slash)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Dcaron, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Ecaron, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Ncaron, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Rcaron, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tcaron, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_Uring, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Yacute, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Q) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, Key_Minus) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_ccaron, RALT(Key_I)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Z)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dcaron, RALT(Key_H)) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_E)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Q)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_W))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_W)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Q))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Z))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_9)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_Z)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_eacute, RALT(Key_C)) \ + OP(XKB_KEY_ecaron, RALT(Key_D)) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_iacute, RALT(Key_G)) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_ncaron, RALT(Key_L)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_oacute, RALT(Key_S)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_plus, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Q)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_rcaron, RALT(Key_O)) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_scaron, RALT(Key_Semicolon)) \ + OP(XKB_KEY_semicolon, Key_Z) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_tcaron, RALT(Key_K)) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_uacute, RALT(Key_V)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_uring, RALT(Key_F)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_yacute, RALT(Key_T)) \ + OP(XKB_KEY_z, Key_Slash) \ + OP(XKB_KEY_zcaron, RALT(Key_Slash)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace cz { +namespace dvorak_ucw { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak_ucw +} // namespace cz +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/cz/qwerty/keymap.h b/src/kaleidoscope/host_keymap/linux/cz/qwerty/keymap.h new file mode 100644 index 0000000000..2dd640082f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/cz/qwerty/keymap.h @@ -0,0 +1,544 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: cz +// variant: qwerty + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', RALT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Semicolon)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_J)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', RALT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_RightBracket) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_1) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Backtick) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Minus) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_H)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_A)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', RALT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Semicolon)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_J)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', RALT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_RightBracket) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_1) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Backtick) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Minus) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_H)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_A)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Quote) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Z)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(LSHIFT(Key_Quote))) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_8) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'é', Key_0) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_9) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ú', Key_LeftBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ý', Key_7) /* U+00fd, XKB_KEY_yacute, LATIN SMALL LETTER Y WITH ACUTE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'č', Key_4) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'ě', Key_2) /* U+011b, XKB_KEY_ecaron, LATIN SMALL LETTER E WITH CARON */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ř', Key_5) /* U+0159, XKB_KEY_rcaron, LATIN SMALL LETTER R WITH CARON */ \ + OP(L'š', Key_3) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ů', Key_Semicolon) /* U+016f, XKB_KEY_uring, LATIN SMALL LETTER U WITH RING ABOVE */ \ + OP(L'ž', Key_6) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_8) \ + OP(XKB_KEY_ampersand, RALT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_J)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(Key_A)) \ + OP(XKB_KEY_asterisk, RALT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, Key_4) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_4))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, LSHIFT(Key_Equals)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_NonUsPound) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Equals)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_6))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_Z)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_0) \ + OP(XKB_KEY_ecaron, Key_2) \ + OP(XKB_KEY_equal, Key_Minus) \ + OP(XKB_KEY_exclam, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_H)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_9) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, RALT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, RALT(Key_9)) \ + OP(XKB_KEY_parenright, Key_RightBracket) \ + OP(XKB_KEY_percent, RALT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_1) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rcaron, Key_5) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_3) \ + OP(XKB_KEY_section, Key_Quote) \ + OP(XKB_KEY_semicolon, Key_Backtick) \ + OP(XKB_KEY_slash, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_uring, Key_Semicolon) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yacute, Key_7) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, Key_6) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace cz { +namespace qwerty { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace qwerty +} // namespace cz +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/cz/qwerty_bksl/keymap.h b/src/kaleidoscope/host_keymap/linux/cz/qwerty_bksl/keymap.h new file mode 100644 index 0000000000..52d1b90869 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/cz/qwerty_bksl/keymap.h @@ -0,0 +1,544 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: cz +// variant: qwerty_bksl + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', RALT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Semicolon)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_J)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', RALT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_RightBracket) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_1) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Backtick) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Minus) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_H)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_A)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', RALT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Semicolon)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_J)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', RALT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_RightBracket) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_1) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Backtick) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Minus) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_H)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_A)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Quote) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Z)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(LSHIFT(Key_Quote))) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_8) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'é', Key_0) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_9) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ú', Key_LeftBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ý', Key_7) /* U+00fd, XKB_KEY_yacute, LATIN SMALL LETTER Y WITH ACUTE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'č', Key_4) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'ě', Key_2) /* U+011b, XKB_KEY_ecaron, LATIN SMALL LETTER E WITH CARON */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ř', Key_5) /* U+0159, XKB_KEY_rcaron, LATIN SMALL LETTER R WITH CARON */ \ + OP(L'š', Key_3) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ů', Key_Semicolon) /* U+016f, XKB_KEY_uring, LATIN SMALL LETTER U WITH RING ABOVE */ \ + OP(L'ž', Key_6) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_8) \ + OP(XKB_KEY_ampersand, RALT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_J)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(Key_A)) \ + OP(XKB_KEY_asterisk, RALT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, Key_4) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_4))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, LSHIFT(Key_Equals)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Minus))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Equals)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_6))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_Z)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_0) \ + OP(XKB_KEY_ecaron, Key_2) \ + OP(XKB_KEY_equal, Key_Minus) \ + OP(XKB_KEY_exclam, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_H)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_9) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, RALT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, RALT(Key_9)) \ + OP(XKB_KEY_parenright, Key_RightBracket) \ + OP(XKB_KEY_percent, RALT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_1) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rcaron, Key_5) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_3) \ + OP(XKB_KEY_section, Key_Quote) \ + OP(XKB_KEY_semicolon, Key_Backtick) \ + OP(XKB_KEY_slash, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_uring, Key_Semicolon) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yacute, Key_7) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, Key_6) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace cz { +namespace qwerty_bksl { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace qwerty_bksl +} // namespace cz +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/cz/rus/keymap.h b/src/kaleidoscope/host_keymap/linux/cz/rus/keymap.h new file mode 100644 index 0000000000..2f0325bbe5 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/cz/rus/keymap.h @@ -0,0 +1,566 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: cz +// variant: rus + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_Period)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_7) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('$', Key_9) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', Key_Minus) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_1)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Equals) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_RightBracket)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_RightBracket) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_1) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Quote)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Quote) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_Semicolon)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_0) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('A', RALT(LSHIFT(Key_A))) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', RALT(LSHIFT(Key_B))) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', RALT(LSHIFT(Key_C))) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', RALT(LSHIFT(Key_D))) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', RALT(LSHIFT(Key_E))) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', RALT(LSHIFT(Key_F))) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', RALT(LSHIFT(Key_G))) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', RALT(LSHIFT(Key_H))) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', RALT(LSHIFT(Key_I))) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', RALT(LSHIFT(Key_J))) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', RALT(LSHIFT(Key_K))) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', RALT(LSHIFT(Key_L))) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', RALT(LSHIFT(Key_M))) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', RALT(LSHIFT(Key_N))) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', RALT(LSHIFT(Key_O))) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', RALT(LSHIFT(Key_P))) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', RALT(LSHIFT(Key_R))) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', RALT(LSHIFT(Key_S))) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', RALT(LSHIFT(Key_T))) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', RALT(LSHIFT(Key_U))) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', RALT(LSHIFT(Key_V))) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', RALT(LSHIFT(Key_Y))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', RALT(LSHIFT(Key_Z))) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', RALT(Key_A)) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', RALT(Key_B)) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', RALT(Key_C)) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', RALT(Key_D)) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', RALT(Key_E)) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', RALT(Key_F)) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', RALT(Key_G)) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', RALT(Key_H)) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', RALT(Key_I)) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', RALT(Key_J)) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', RALT(Key_K)) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', RALT(Key_L)) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', RALT(Key_M)) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', RALT(Key_N)) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', RALT(Key_O)) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', RALT(Key_P)) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', RALT(Key_R)) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', RALT(Key_S)) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', RALT(Key_T)) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', RALT(Key_U)) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', RALT(Key_V)) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', RALT(Key_Y)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', RALT(Key_Z)) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_Period)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_7) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'$', Key_9) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', Key_Minus) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_1)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Equals) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_RightBracket)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_RightBracket) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_1) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Quote)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Quote) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_Semicolon)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_0) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'A', RALT(LSHIFT(Key_A))) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', RALT(LSHIFT(Key_B))) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', RALT(LSHIFT(Key_C))) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', RALT(LSHIFT(Key_D))) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', RALT(LSHIFT(Key_E))) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', RALT(LSHIFT(Key_F))) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', RALT(LSHIFT(Key_G))) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', RALT(LSHIFT(Key_H))) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', RALT(LSHIFT(Key_I))) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', RALT(LSHIFT(Key_J))) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', RALT(LSHIFT(Key_K))) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', RALT(LSHIFT(Key_L))) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', RALT(LSHIFT(Key_M))) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', RALT(LSHIFT(Key_N))) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', RALT(LSHIFT(Key_O))) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', RALT(LSHIFT(Key_P))) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', RALT(LSHIFT(Key_R))) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', RALT(LSHIFT(Key_S))) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', RALT(LSHIFT(Key_T))) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', RALT(LSHIFT(Key_U))) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', RALT(LSHIFT(Key_V))) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', RALT(LSHIFT(Key_Y))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', RALT(LSHIFT(Key_Z))) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', RALT(Key_A)) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', RALT(Key_B)) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', RALT(Key_C)) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', RALT(Key_D)) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', RALT(Key_E)) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', RALT(Key_F)) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', RALT(Key_G)) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', RALT(Key_H)) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', RALT(Key_I)) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', RALT(Key_J)) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', RALT(Key_K)) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', RALT(Key_L)) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', RALT(Key_M)) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', RALT(Key_N)) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', RALT(Key_O)) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', RALT(Key_P)) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', RALT(Key_R)) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', RALT(Key_S)) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', RALT(Key_T)) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', RALT(Key_U)) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', RALT(Key_V)) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', RALT(Key_Y)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', RALT(Key_Z)) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsPound)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_8) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'×', RALT(LSHIFT(Key_RightBracket))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'ß', RALT(LSHIFT(Key_Quote))) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'÷', RALT(LSHIFT(Key_LeftBracket))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ё', LSHIFT(Key_Backtick)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_V)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_G)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_6)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Z)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_I)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_J)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_H)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_C)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_4)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_3)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_5)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ы', LSHIFT(Key_Y)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_Semicolon)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_LeftBracket)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_W)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_X)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_V) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_G) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_6) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Z) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_I) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_J) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_H) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_C) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_4) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_3) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_5) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_2) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_Y) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_Semicolon) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_LeftBracket) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_W) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_X) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Backtick) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'№', Key_Q) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_0)) \ + OP(XKB_KEY_1, RALT(Key_1)) \ + OP(XKB_KEY_2, RALT(Key_2)) \ + OP(XKB_KEY_3, RALT(Key_3)) \ + OP(XKB_KEY_4, RALT(Key_4)) \ + OP(XKB_KEY_5, RALT(Key_5)) \ + OP(XKB_KEY_6, RALT(Key_6)) \ + OP(XKB_KEY_7, RALT(Key_7)) \ + OP(XKB_KEY_8, RALT(Key_8)) \ + OP(XKB_KEY_9, RALT(Key_9)) \ + OP(XKB_KEY_A, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_4)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_3)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_5)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_6)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_4) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_e, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_G) \ + OP(XKB_KEY_Cyrillic_ha, Key_H) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_2) \ + OP(XKB_KEY_Cyrillic_i, Key_I) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_io, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_3) \ + OP(XKB_KEY_Cyrillic_shcha, Key_5) \ + OP(XKB_KEY_Cyrillic_shorti, Key_J) \ + OP(XKB_KEY_Cyrillic_softsign, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_C) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_ve, Key_V) \ + OP(XKB_KEY_Cyrillic_ya, Key_X) \ + OP(XKB_KEY_Cyrillic_yeru, Key_Y) \ + OP(XKB_KEY_Cyrillic_yu, Key_W) \ + OP(XKB_KEY_Cyrillic_ze, Key_Z) \ + OP(XKB_KEY_Cyrillic_zhe, Key_6) \ + OP(XKB_KEY_D, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_H, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_K, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_W, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_X, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_1)) \ + OP(XKB_KEY_apostrophe, Key_Equals) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, RALT(Key_Slash)) \ + OP(XKB_KEY_b, RALT(Key_B)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_c, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, RALT(Key_D)) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Minus))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Equals)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_dollar, Key_9) \ + OP(XKB_KEY_e, RALT(Key_E)) \ + OP(XKB_KEY_equal, Key_0) \ + OP(XKB_KEY_exclam, LSHIFT(Key_Period)) \ + OP(XKB_KEY_f, RALT(Key_F)) \ + OP(XKB_KEY_g, RALT(Key_G)) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_h, RALT(Key_H)) \ + OP(XKB_KEY_i, RALT(Key_I)) \ + OP(XKB_KEY_j, RALT(Key_J)) \ + OP(XKB_KEY_k, RALT(Key_K)) \ + OP(XKB_KEY_l, RALT(Key_L)) \ + OP(XKB_KEY_less, RALT(Key_Semicolon)) \ + OP(XKB_KEY_m, RALT(Key_M)) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_n, RALT(Key_N)) \ + OP(XKB_KEY_numerosign, Key_Q) \ + OP(XKB_KEY_o, RALT(Key_O)) \ + OP(XKB_KEY_p, RALT(Key_P)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_parenright, Key_RightBracket) \ + OP(XKB_KEY_percent, Key_Minus) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_1) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_quotedbl, Key_7) \ + OP(XKB_KEY_r, RALT(Key_R)) \ + OP(XKB_KEY_s, RALT(Key_S)) \ + OP(XKB_KEY_section, Key_8) \ + OP(XKB_KEY_semicolon, Key_Quote) \ + OP(XKB_KEY_slash, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_t, RALT(Key_T)) \ + OP(XKB_KEY_u, RALT(Key_U)) \ + OP(XKB_KEY_v, RALT(Key_V)) \ + OP(XKB_KEY_w, RALT(Key_W)) \ + OP(XKB_KEY_x, RALT(Key_X)) \ + OP(XKB_KEY_y, RALT(Key_Y)) \ + OP(XKB_KEY_z, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace cz { +namespace rus { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace rus +} // namespace cz +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/cz/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/cz/standard/keymap.h new file mode 100644 index 0000000000..0835ab488f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/cz/standard/keymap.h @@ -0,0 +1,544 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: cz +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', RALT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Semicolon)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_J)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_RightBracket)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_RightBracket) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_1) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Backtick) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Minus) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_H)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_9)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_A)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', RALT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Semicolon)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_J)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_RightBracket)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_RightBracket) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_1) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Backtick) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Minus) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_H)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_9)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_A)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Quote) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Z)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_RightBracket))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(LSHIFT(Key_Quote))) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_8) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'é', Key_0) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_9) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'÷', RALT(LSHIFT(Key_LeftBracket))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ú', Key_LeftBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ý', Key_7) /* U+00fd, XKB_KEY_yacute, LATIN SMALL LETTER Y WITH ACUTE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'č', Key_4) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'ě', Key_2) /* U+011b, XKB_KEY_ecaron, LATIN SMALL LETTER E WITH CARON */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ř', Key_5) /* U+0159, XKB_KEY_rcaron, LATIN SMALL LETTER R WITH CARON */ \ + OP(L'š', Key_3) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ů', Key_Semicolon) /* U+016f, XKB_KEY_uring, LATIN SMALL LETTER U WITH RING ABOVE */ \ + OP(L'ž', Key_6) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_8) \ + OP(XKB_KEY_ampersand, RALT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_J)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(Key_A)) \ + OP(XKB_KEY_asterisk, RALT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_9)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, Key_4) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_4))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, LSHIFT(Key_Equals)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_NonUsPound) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Equals)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_6))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_Z)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_0) \ + OP(XKB_KEY_ecaron, Key_2) \ + OP(XKB_KEY_equal, Key_Minus) \ + OP(XKB_KEY_exclam, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_H)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_9) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, RALT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_parenright, Key_RightBracket) \ + OP(XKB_KEY_percent, RALT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_1) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rcaron, Key_5) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_3) \ + OP(XKB_KEY_section, Key_Quote) \ + OP(XKB_KEY_semicolon, Key_Backtick) \ + OP(XKB_KEY_slash, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_uring, Key_Semicolon) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yacute, Key_7) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + OP(XKB_KEY_zcaron, Key_6) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace cz { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace cz +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/cz/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/cz/sun_type6/keymap.h new file mode 100644 index 0000000000..182c2a3c55 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/cz/sun_type6/keymap.h @@ -0,0 +1,492 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: cz +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', RALT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Semicolon)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', RALT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_RightBracket) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_1) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Backtick) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_Z)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Minus) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_X)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_1))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', RALT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Semicolon)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', RALT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_RightBracket) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_1) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Backtick) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_Z)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Minus) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_X)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_1))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¤', RALT(LSHIFT(Key_Quote))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Quote) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_8) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'é', Key_0) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_9) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ú', Key_LeftBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ý', Key_7) /* U+00fd, XKB_KEY_yacute, LATIN SMALL LETTER Y WITH ACUTE */ \ + OP(L'č', Key_4) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'ě', Key_2) /* U+011b, XKB_KEY_ecaron, LATIN SMALL LETTER E WITH CARON */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'ř', Key_5) /* U+0159, XKB_KEY_rcaron, LATIN SMALL LETTER R WITH CARON */ \ + OP(L'š', Key_3) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'ů', Key_Semicolon) /* U+016f, XKB_KEY_uring, LATIN SMALL LETTER U WITH RING ABOVE */ \ + OP(L'ž', Key_6) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_8) \ + OP(XKB_KEY_ampersand, RALT(Key_7)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_asterisk, RALT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, Key_4) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_4))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, LSHIFT(Key_Equals)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_NonUsPound) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_6))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_0) \ + OP(XKB_KEY_ecaron, Key_2) \ + OP(XKB_KEY_equal, Key_Minus) \ + OP(XKB_KEY_exclam, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_9) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, RALT(Key_Z)) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, RALT(Key_9)) \ + OP(XKB_KEY_parenright, Key_RightBracket) \ + OP(XKB_KEY_percent, RALT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_1) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rcaron, Key_5) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_3) \ + OP(XKB_KEY_section, Key_Quote) \ + OP(XKB_KEY_semicolon, Key_Backtick) \ + OP(XKB_KEY_slash, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uring, Key_Semicolon) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yacute, Key_7) \ + OP(XKB_KEY_z, Key_Y) \ + OP(XKB_KEY_zcaron, Key_6) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace cz { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace cz +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/cz/ucw/keymap.h b/src/kaleidoscope/host_keymap/linux/cz/ucw/keymap.h new file mode 100644 index 0000000000..f5cd42d5ba --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/cz/ucw/keymap.h @@ -0,0 +1,301 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: cz +// variant: ucw + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Á', LSHIFT(Key_A)) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', LSHIFT(Key_Q)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Ç', LSHIFT(Key_V)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'É', LSHIFT(Key_E)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ë', LSHIFT(Key_F)) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Í', LSHIFT(Key_I)) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ñ', LSHIFT(Key_B)) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ó', LSHIFT(Key_O)) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ô', LSHIFT(Key_K)) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', LSHIFT(Key_P)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'Ú', LSHIFT(Key_H)) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', LSHIFT(Key_J)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Ý', LSHIFT(Key_Y)) /* U+00dd, XKB_KEY_Yacute, LATIN CAPITAL LETTER Y WITH ACUTE */ \ + OP(L'ß', Key_X) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_A) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', Key_Q) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'ç', Key_V) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', Key_E) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ë', Key_F) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'í', Key_I) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ñ', Key_B) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ó', Key_O) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ô', Key_K) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', Key_P) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ú', Key_H) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', Key_J) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'ý', Key_Y) /* U+00fd, XKB_KEY_yacute, LATIN SMALL LETTER Y WITH ACUTE */ \ + OP(L'Č', LSHIFT(Key_C)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_C) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Ď', LSHIFT(Key_D)) /* U+010e, XKB_KEY_Dcaron, LATIN CAPITAL LETTER D WITH CARON */ \ + OP(L'ď', Key_D) /* U+010f, XKB_KEY_dcaron, LATIN SMALL LETTER D WITH CARON */ \ + OP(L'Ě', LSHIFT(Key_W)) /* U+011a, XKB_KEY_Ecaron, LATIN CAPITAL LETTER E WITH CARON */ \ + OP(L'ě', Key_W) /* U+011b, XKB_KEY_ecaron, LATIN SMALL LETTER E WITH CARON */ \ + OP(L'Ĺ', LSHIFT(Key_M)) /* U+0139, XKB_KEY_Lacute, LATIN CAPITAL LETTER L WITH ACUTE */ \ + OP(L'ĺ', Key_M) /* U+013a, XKB_KEY_lacute, LATIN SMALL LETTER L WITH ACUTE */ \ + OP(L'Ľ', LSHIFT(Key_L)) /* U+013d, XKB_KEY_Lcaron, LATIN CAPITAL LETTER L WITH CARON */ \ + OP(L'ľ', Key_L) /* U+013e, XKB_KEY_lcaron, LATIN SMALL LETTER L WITH CARON */ \ + OP(L'Ň', LSHIFT(Key_N)) /* U+0147, XKB_KEY_Ncaron, LATIN CAPITAL LETTER N WITH CARON */ \ + OP(L'ň', Key_N) /* U+0148, XKB_KEY_ncaron, LATIN SMALL LETTER N WITH CARON */ \ + OP(L'Ŕ', LSHIFT(Key_G)) /* U+0154, XKB_KEY_Racute, LATIN CAPITAL LETTER R WITH ACUTE */ \ + OP(L'ŕ', Key_G) /* U+0155, XKB_KEY_racute, LATIN SMALL LETTER R WITH ACUTE */ \ + OP(L'Ř', LSHIFT(Key_R)) /* U+0158, XKB_KEY_Rcaron, LATIN CAPITAL LETTER R WITH CARON */ \ + OP(L'ř', Key_R) /* U+0159, XKB_KEY_rcaron, LATIN SMALL LETTER R WITH CARON */ \ + OP(L'Š', LSHIFT(Key_S)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_S) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ť', LSHIFT(Key_T)) /* U+0164, XKB_KEY_Tcaron, LATIN CAPITAL LETTER T WITH CARON */ \ + OP(L'ť', Key_T) /* U+0165, XKB_KEY_tcaron, LATIN SMALL LETTER T WITH CARON */ \ + OP(L'Ů', LSHIFT(Key_U)) /* U+016e, XKB_KEY_Uring, LATIN CAPITAL LETTER U WITH RING ABOVE */ \ + OP(L'ů', Key_U) /* U+016f, XKB_KEY_uring, LATIN SMALL LETTER U WITH RING ABOVE */ \ + OP(L'Ž', LSHIFT(Key_Z)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_Z) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Aacute, LSHIFT(Key_A)) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_C)) \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_V)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Dcaron, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Eacute, LSHIFT(Key_E)) \ + OP(XKB_KEY_Ecaron, LSHIFT(Key_W)) \ + OP(XKB_KEY_Ediaeresis, LSHIFT(Key_F)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Iacute, LSHIFT(Key_I)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Lacute, LSHIFT(Key_M)) \ + OP(XKB_KEY_Lcaron, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Ncaron, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, LSHIFT(Key_B)) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Oacute, LSHIFT(Key_O)) \ + OP(XKB_KEY_Ocircumflex, LSHIFT(Key_K)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Racute, LSHIFT(Key_G)) \ + OP(XKB_KEY_Rcaron, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scaron, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tcaron, LSHIFT(Key_T)) \ + OP(XKB_KEY_Uacute, LSHIFT(Key_H)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_J)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_Uring, LSHIFT(Key_U)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Yacute, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_Z)) \ + OP(XKB_KEY_aacute, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Q) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_ccaron, Key_C) \ + OP(XKB_KEY_ccedilla, Key_V) \ + OP(XKB_KEY_dcaron, Key_D) \ + OP(XKB_KEY_eacute, Key_E) \ + OP(XKB_KEY_ecaron, Key_W) \ + OP(XKB_KEY_ediaeresis, Key_F) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_iacute, Key_I) \ + OP(XKB_KEY_lacute, Key_M) \ + OP(XKB_KEY_lcaron, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_ncaron, Key_N) \ + OP(XKB_KEY_ntilde, Key_B) \ + OP(XKB_KEY_oacute, Key_O) \ + OP(XKB_KEY_ocircumflex, Key_K) \ + OP(XKB_KEY_odiaeresis, Key_P) \ + OP(XKB_KEY_racute, Key_G) \ + OP(XKB_KEY_rcaron, Key_R) \ + OP(XKB_KEY_scaron, Key_S) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_X) \ + OP(XKB_KEY_tcaron, Key_T) \ + OP(XKB_KEY_uacute, Key_H) \ + OP(XKB_KEY_udiaeresis, Key_J) \ + OP(XKB_KEY_uring, Key_U) \ + OP(XKB_KEY_yacute, Key_Y) \ + OP(XKB_KEY_zcaron, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace cz { +namespace ucw { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ucw +} // namespace cz +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/T3/keymap.h b/src/kaleidoscope/host_keymap/linux/de/T3/keymap.h new file mode 100644 index 0000000000..b94fc2d811 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/T3/keymap.h @@ -0,0 +1,572 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: T3 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_5)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_2))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_V)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'­', RALT(Key_Slash)) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'®', RALT(Key_NonUsPound)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_6)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Backtick)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', Key_Minus) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'IJ', RALT(LSHIFT(Key_J))) \ + OP(L'Ŀ', RALT(LSHIFT(Key_Slash))) \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_E))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'Ə', RALT(LSHIFT(Key_NonUsPound))) /* U+018f, XKB_KEY_SCHWA, LATIN CAPITAL LETTER SCHWA */ \ + OP(L'Ɲ', RALT(LSHIFT(Key_H))) \ + OP(L'Ʒ', RALT(LSHIFT(Key_Z))) /* U+01b7, XKB_KEY_EZH, LATIN CAPITAL LETTER EZH */ \ + OP(L'Ƞ', RALT(LSHIFT(Key_N))) \ + OP(L'Ȣ', RALT(LSHIFT(Key_U))) \ + OP(L'Ɂ', RALT(LSHIFT(Key_Q))) \ + OP(L'ʻ', RALT(Key_Comma)) \ + OP(L'μ', RALT(Key_M)) /* U+03bc, XKB_KEY_Greek_mu, GREEK SMALL LETTER MU */ \ + OP(L'ẞ', RALT(Key_H)) \ + OP(L'‌', RALT(Key_Period)) \ + OP(L'–', RALT(Key_N)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_4)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_1)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_X))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'′', RALT(Key_F)) /* U+2032, XKB_KEY_minutes, PRIME */ \ + OP(L'″', RALT(Key_G)) /* U+2033, XKB_KEY_seconds, DOUBLE PRIME */ \ + OP(L'‹', RALT(Key_B)) \ + OP(L'›', RALT(Key_Z)) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_0))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'Ω', RALT(LSHIFT(Key_W))) \ + OP(L'⅍', RALT(LSHIFT(Key_I))) \ + OP(L'←', RALT(LSHIFT(Key_7))) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_5))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(LSHIFT(Key_8))) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(LSHIFT(Key_6))) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'≤', RALT(Key_A)) /* U+2264, XKB_KEY_lessthanequal, LESS-THAN OR EQUAL TO */ \ + OP(L'≥', RALT(Key_S)) /* U+2265, XKB_KEY_greaterthanequal, GREATER-THAN OR EQUAL TO */ \ + OP(L'⌀', RALT(Key_D)) \ + OP(L'Ꞌ', RALT(LSHIFT(Key_T))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_EZH, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_mu, RALT(Key_M)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_ISO_Level5_Latch, RALT(Key_LeftShift)) /* XKB_KEY_ISO_Level5_Latch */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_SCHWA, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Equals)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_O)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowcomma, RALT(Key_K)) /* XKB_KEY_dead_belowcomma */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Semicolon)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(Key_U)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_W)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_J)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_Backtick) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_R)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_Y)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_P)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(Key_LeftBracket)) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_T)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_L)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_stroke, RALT(Key_Quote)) /* XKB_KEY_dead_stroke */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_I)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(Key_4)) \ + OP(XKB_KEY_endash, RALT(Key_N)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_5)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_greaterthanequal, RALT(Key_S)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_V)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hyphen, RALT(Key_Slash)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lessthanequal, RALT(Key_A)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_minutes, RALT(Key_F)) \ + OP(XKB_KEY_multiply, RALT(Key_Backtick)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(Key_6)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_rightarrow, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_1)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_seconds, RALT(Key_G)) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Minus) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace T3 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace T3 +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/adnw/keymap.h b/src/kaleidoscope/host_keymap/linux/de/adnw/keymap.h new file mode 100644 index 0000000000..50a93fd401 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/adnw/keymap.h @@ -0,0 +1,451 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: adnw + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('$', LSHIFT(Key_6)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_V) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_R) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', RALT(Key_N)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('A', LSHIFT(Key_F)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_LeftBracket)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_A)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_S)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_P)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_Q)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_O)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Period)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_G)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_M)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_B)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_K)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_J)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_W)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Y)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_Z)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_X)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('a', Key_F) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_LeftBracket) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_A) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_S) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_P) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_Q) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_O) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Period) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_G) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_M) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_B) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_K) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_J) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_W) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Y) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_Z) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_X) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'$', LSHIFT(Key_6)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_V) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_R) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', RALT(Key_N)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'A', LSHIFT(Key_F)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_LeftBracket)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_A)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_S)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_P)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_Q)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_O)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Period)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_G)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_M)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_B)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_K)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_J)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_W)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Y)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_Z)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_X)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'a', Key_F) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_LeftBracket) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_A) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_S) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_P) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_Q) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_O) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Period) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_G) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_M) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_B) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_K) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_J) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_W) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Y) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_Z) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_X) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_Y)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(Key_6)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_7)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'§', LSHIFT(Key_2)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'ª', RALT(Key_1)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', LSHIFT(Key_5)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', LSHIFT(Key_1)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'·', RALT(Key_5)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(Key_2)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', LSHIFT(Key_4)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_H)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_T)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Ö', LSHIFT(Key_C)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_KeypadMultiply)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ü', LSHIFT(Key_E)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'ß', Key_Quote) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_T) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'ö', Key_C) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ü', Key_E) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'ẞ', LSHIFT(Key_Quote)) \ + OP(L'–', LSHIFT(Key_V)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', LSHIFT(Key_Minus)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', LSHIFT(Key_9)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', LSHIFT(Key_0)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', LSHIFT(Key_8)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'†', LSHIFT(Key_Keypad9)) /* U+2020, XKB_KEY_dagger, DAGGER */ \ + OP(L'•', LSHIFT(Key_R)) /* U+2022, XKB_KEY_enfilledcircbullet, BULLET */ \ + OP(L'‣', LSHIFT(Key_Keypad6)) \ + OP(L'€', LSHIFT(Key_7)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'ℓ', LSHIFT(Key_3)) \ + OP(L'№', RALT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + OP(L'−', RALT(Key_LeftBracket)) \ + OP(L'∓', RALT(Key_KeypadAdd)) \ + OP(L'∕', RALT(Key_KeypadDivide)) \ + OP(L'∖', RALT(Key_KeypadSubtract)) \ + OP(L'≠', RALT(Key_KeypadNumLock)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'␣', LSHIFT(Key_Keypad0)) \ + OP(L'♠', LSHIFT(Key_Keypad3)) \ + OP(L'♣', LSHIFT(Key_Keypad4)) /* U+2663, XKB_KEY_club, BLACK CLUB SUIT */ \ + OP(L'♥', LSHIFT(Key_Keypad2)) /* U+2665, XKB_KEY_heart, BLACK HEART SUIT */ \ + OP(L'♦', LSHIFT(Key_Keypad1)) /* U+2666, XKB_KEY_diamond, BLACK DIAMOND SUIT */ \ + OP(L'✔', LSHIFT(Key_Keypad7)) \ + OP(L'✘', LSHIFT(Key_Keypad8)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_T)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, LSHIFT(Key_LeftShift)) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, LSHIFT(Key_7)) \ + OP(XKB_KEY_F, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_A)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_S)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_NonUsPound) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_ISO_Level5_Lock, RALT(Key_NonUsBackslashAndPipe)) /* XKB_KEY_ISO_Level5_Lock */ \ + OP(XKB_KEY_ISO_Level5_Shift, Key_NonUsBackslashAndPipe) /* XKB_KEY_ISO_Level5_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_P)) \ + OP(XKB_KEY_K, LSHIFT(Key_Q)) \ + OP(XKB_KEY_KP_0, Key_Keypad0) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, Key_Keypad1) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, Key_Keypad2) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, Key_Keypad3) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, Key_Keypad4) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, Key_Keypad5) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, Key_Keypad6) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, Key_Keypad7) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, Key_Keypad8) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, Key_Keypad9) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, RALT(Key_Keypad5)) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, RALT(Key_KeypadDot)) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, RALT(Key_Keypad2)) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, RALT(Key_Keypad1)) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, RALT(Key_Keypad7)) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, RALT(Key_Keypad0)) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, RALT(Key_Keypad4)) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, RALT(Key_Keypad3)) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, RALT(Key_Keypad9)) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, RALT(Key_Keypad6)) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, Key_KeypadDot) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, RALT(Key_Keypad8)) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_O)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_O, LSHIFT(Key_G)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_C)) \ + OP(XKB_KEY_P, LSHIFT(Key_M)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Pointer_EnableKeys, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_Pointer_EnableKeys */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_B)) \ + OP(XKB_KEY_R, LSHIFT(Key_K)) \ + OP(XKB_KEY_Redo, RALT(LSHIFT(Key_B))) /* XKB_KEY_Redo, Redo, again */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_J)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_W)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_E)) \ + OP(XKB_KEY_Undo, RALT(Key_B)) /* XKB_KEY_Undo */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Y)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_Z)) \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_Y, LSHIFT(Key_X)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_F) \ + OP(XKB_KEY_adiaeresis, Key_T) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_club, LSHIFT(Key_Keypad4)) \ + OP(XKB_KEY_colon, RALT(Key_N)) \ + OP(XKB_KEY_comma, Key_V) \ + OP(XKB_KEY_currency, RALT(Key_7)) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dagger, LSHIFT(Key_Keypad9)) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Backtick)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, Key_RightBracket) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, LSHIFT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_Backtick) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Equals)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_RightBracket)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_Equals) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_1)) \ + OP(XKB_KEY_diamond, LSHIFT(Key_Keypad1)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_6)) \ + OP(XKB_KEY_doublelowquotemark, LSHIFT(Key_8)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_emdash, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_endash, LSHIFT(Key_V)) \ + OP(XKB_KEY_enfilledcircbullet, LSHIFT(Key_R)) \ + OP(XKB_KEY_exclamdown, RALT(Key_Y)) \ + OP(XKB_KEY_f, Key_LeftBracket) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_guillemotleft, LSHIFT(Key_5)) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_4)) \ + OP(XKB_KEY_h, Key_A) \ + OP(XKB_KEY_heart, LSHIFT(Key_Keypad2)) \ + OP(XKB_KEY_i, Key_S) \ + OP(XKB_KEY_j, Key_P) \ + OP(XKB_KEY_k, Key_Q) \ + OP(XKB_KEY_l, Key_O) \ + OP(XKB_KEY_leftdoublequotemark, LSHIFT(Key_9)) \ + OP(XKB_KEY_m, Key_Period) \ + OP(XKB_KEY_masculine, RALT(Key_2)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(Key_KeypadMultiply)) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_notequal, RALT(Key_KeypadNumLock)) \ + OP(XKB_KEY_numerosign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_G) \ + OP(XKB_KEY_odiaeresis, Key_C) \ + OP(XKB_KEY_ordfeminine, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_M) \ + OP(XKB_KEY_period, Key_R) \ + OP(XKB_KEY_periodcentered, RALT(Key_5)) \ + OP(XKB_KEY_q, Key_B) \ + OP(XKB_KEY_questiondown, RALT(Key_H)) \ + OP(XKB_KEY_r, Key_K) \ + OP(XKB_KEY_rightdoublequotemark, LSHIFT(Key_0)) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_section, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, RALT(Key_Slash)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Quote) \ + OP(XKB_KEY_sterling, RALT(Key_6)) \ + OP(XKB_KEY_t, Key_J) \ + OP(XKB_KEY_u, Key_W) \ + OP(XKB_KEY_udiaeresis, Key_E) \ + OP(XKB_KEY_v, Key_Y) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_Z) \ + OP(XKB_KEY_y, Key_X) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace adnw { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace adnw +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/bone/keymap.h b/src/kaleidoscope/host_keymap/linux/de/bone/keymap.h new file mode 100644 index 0000000000..6656a51432 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/bone/keymap.h @@ -0,0 +1,451 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: bone + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('$', LSHIFT(Key_6)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', RALT(Key_N)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('A', LSHIFT(Key_R)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_H)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_A)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_W)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_F)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Z)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_Semicolon)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_U)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_D)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_Q)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_Slash)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_I)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_O)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_G)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_Y)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Quote)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_K)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_L)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_S)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_E)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_X)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_P)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_T)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_N)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_M)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('a', Key_R) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_H) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_A) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_W) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_F) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Z) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_Semicolon) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_U) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_D) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_Q) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_Slash) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_I) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_O) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_G) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_Y) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Quote) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_K) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_L) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_S) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_E) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_X) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_P) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_T) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_N) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_M) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'$', LSHIFT(Key_6)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', RALT(Key_N)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'A', LSHIFT(Key_R)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_H)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_A)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_W)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_F)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Z)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_Semicolon)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_U)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_D)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_Q)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_Slash)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_I)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_O)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_G)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_Y)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Quote)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_K)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_L)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_S)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_E)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_X)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_P)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_T)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_N)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_M)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'a', Key_R) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_H) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_A) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_W) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_F) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Z) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_Semicolon) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_U) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_D) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_Q) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_Slash) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_I) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_O) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_G) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_Y) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Quote) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_K) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_L) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_S) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_E) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_X) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_P) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_T) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_N) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_M) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_Y)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(Key_6)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_7)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'§', LSHIFT(Key_2)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'ª', RALT(Key_1)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', LSHIFT(Key_5)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', LSHIFT(Key_1)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'·', RALT(Key_5)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(Key_2)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', LSHIFT(Key_4)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_H)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_V)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Ö', LSHIFT(Key_B)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_KeypadMultiply)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ü', LSHIFT(Key_C)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'ß', Key_LeftBracket) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_V) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'ö', Key_B) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ü', Key_C) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'ẞ', LSHIFT(Key_LeftBracket)) \ + OP(L'–', LSHIFT(Key_Comma)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', LSHIFT(Key_Minus)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', LSHIFT(Key_9)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', LSHIFT(Key_0)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', LSHIFT(Key_8)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'†', LSHIFT(Key_Keypad9)) /* U+2020, XKB_KEY_dagger, DAGGER */ \ + OP(L'•', LSHIFT(Key_Period)) /* U+2022, XKB_KEY_enfilledcircbullet, BULLET */ \ + OP(L'‣', LSHIFT(Key_Keypad6)) \ + OP(L'€', LSHIFT(Key_7)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'ℓ', LSHIFT(Key_3)) \ + OP(L'№', RALT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + OP(L'−', RALT(Key_LeftBracket)) \ + OP(L'∓', RALT(Key_KeypadAdd)) \ + OP(L'∕', RALT(Key_KeypadDivide)) \ + OP(L'∖', RALT(Key_KeypadSubtract)) \ + OP(L'≠', RALT(Key_KeypadNumLock)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'␣', LSHIFT(Key_Keypad0)) \ + OP(L'♠', LSHIFT(Key_Keypad3)) \ + OP(L'♣', LSHIFT(Key_Keypad4)) /* U+2663, XKB_KEY_club, BLACK CLUB SUIT */ \ + OP(L'♥', LSHIFT(Key_Keypad2)) /* U+2665, XKB_KEY_heart, BLACK HEART SUIT */ \ + OP(L'♦', LSHIFT(Key_Keypad1)) /* U+2666, XKB_KEY_diamond, BLACK DIAMOND SUIT */ \ + OP(L'✔', LSHIFT(Key_Keypad7)) \ + OP(L'✘', LSHIFT(Key_Keypad8)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_R)) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_V)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_H)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_A)) \ + OP(XKB_KEY_Caps_Lock, LSHIFT(Key_LeftShift)) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_W)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_F)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, LSHIFT(Key_7)) \ + OP(XKB_KEY_F, LSHIFT(Key_Z)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_H, LSHIFT(Key_U)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_D)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_NonUsPound) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_ISO_Level5_Lock, RALT(Key_NonUsBackslashAndPipe)) /* XKB_KEY_ISO_Level5_Lock */ \ + OP(XKB_KEY_ISO_Level5_Shift, Key_NonUsBackslashAndPipe) /* XKB_KEY_ISO_Level5_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_Q)) \ + OP(XKB_KEY_K, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_KP_0, Key_Keypad0) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, Key_Keypad1) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, Key_Keypad2) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, Key_Keypad3) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, Key_Keypad4) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, Key_Keypad5) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, Key_Keypad6) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, Key_Keypad7) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, Key_Keypad8) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, Key_Keypad9) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, RALT(Key_Keypad5)) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, RALT(Key_KeypadDot)) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, RALT(Key_Keypad2)) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, RALT(Key_Keypad1)) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, RALT(Key_Keypad7)) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, RALT(Key_Keypad0)) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, RALT(Key_Keypad4)) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, RALT(Key_Keypad3)) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, RALT(Key_Keypad9)) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, RALT(Key_Keypad6)) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, Key_KeypadDot) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, RALT(Key_Keypad8)) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_I)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_O)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_J)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_O, LSHIFT(Key_G)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_B)) \ + OP(XKB_KEY_P, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Pointer_EnableKeys, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_Pointer_EnableKeys */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_R, LSHIFT(Key_K)) \ + OP(XKB_KEY_Redo, RALT(LSHIFT(Key_B))) /* XKB_KEY_Redo, Redo, again */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_L)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_S)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_C)) \ + OP(XKB_KEY_Undo, RALT(Key_B)) /* XKB_KEY_Undo */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_X)) \ + OP(XKB_KEY_W, LSHIFT(Key_P)) \ + OP(XKB_KEY_X, LSHIFT(Key_T)) \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_Y, LSHIFT(Key_N)) \ + OP(XKB_KEY_Z, LSHIFT(Key_M)) \ + OP(XKB_KEY_a, Key_R) \ + OP(XKB_KEY_adiaeresis, Key_V) \ + OP(XKB_KEY_b, Key_H) \ + OP(XKB_KEY_c, Key_A) \ + OP(XKB_KEY_club, LSHIFT(Key_Keypad4)) \ + OP(XKB_KEY_colon, RALT(Key_N)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_currency, RALT(Key_7)) \ + OP(XKB_KEY_d, Key_W) \ + OP(XKB_KEY_dagger, LSHIFT(Key_Keypad9)) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Backtick)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, Key_RightBracket) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, LSHIFT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_Backtick) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Equals)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_RightBracket)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_Equals) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_1)) \ + OP(XKB_KEY_diamond, LSHIFT(Key_Keypad1)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_6)) \ + OP(XKB_KEY_doublelowquotemark, LSHIFT(Key_8)) \ + OP(XKB_KEY_e, Key_F) \ + OP(XKB_KEY_emdash, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_endash, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_enfilledcircbullet, LSHIFT(Key_Period)) \ + OP(XKB_KEY_exclamdown, RALT(Key_Y)) \ + OP(XKB_KEY_f, Key_Z) \ + OP(XKB_KEY_g, Key_Semicolon) \ + OP(XKB_KEY_guillemotleft, LSHIFT(Key_5)) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_4)) \ + OP(XKB_KEY_h, Key_U) \ + OP(XKB_KEY_heart, LSHIFT(Key_Keypad2)) \ + OP(XKB_KEY_i, Key_D) \ + OP(XKB_KEY_j, Key_Q) \ + OP(XKB_KEY_k, Key_Slash) \ + OP(XKB_KEY_l, Key_I) \ + OP(XKB_KEY_leftdoublequotemark, LSHIFT(Key_9)) \ + OP(XKB_KEY_m, Key_O) \ + OP(XKB_KEY_masculine, RALT(Key_2)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(Key_KeypadMultiply)) \ + OP(XKB_KEY_n, Key_J) \ + OP(XKB_KEY_notequal, RALT(Key_KeypadNumLock)) \ + OP(XKB_KEY_numerosign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_G) \ + OP(XKB_KEY_odiaeresis, Key_B) \ + OP(XKB_KEY_ordfeminine, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_Y) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_5)) \ + OP(XKB_KEY_q, Key_Quote) \ + OP(XKB_KEY_questiondown, RALT(Key_H)) \ + OP(XKB_KEY_r, Key_K) \ + OP(XKB_KEY_rightdoublequotemark, LSHIFT(Key_0)) \ + OP(XKB_KEY_s, Key_L) \ + OP(XKB_KEY_section, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, RALT(Key_Slash)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_LeftBracket) \ + OP(XKB_KEY_sterling, RALT(Key_6)) \ + OP(XKB_KEY_t, Key_S) \ + OP(XKB_KEY_u, Key_E) \ + OP(XKB_KEY_udiaeresis, Key_C) \ + OP(XKB_KEY_v, Key_X) \ + OP(XKB_KEY_w, Key_P) \ + OP(XKB_KEY_x, Key_T) \ + OP(XKB_KEY_y, Key_N) \ + OP(XKB_KEY_z, Key_M) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace bone { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace bone +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/bone_eszett_home/keymap.h b/src/kaleidoscope/host_keymap/linux/de/bone_eszett_home/keymap.h new file mode 100644 index 0000000000..3d7d292dc2 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/bone_eszett_home/keymap.h @@ -0,0 +1,451 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: bone_eszett_home + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('$', LSHIFT(Key_6)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', RALT(Key_N)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('A', LSHIFT(Key_R)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_H)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_A)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_W)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_F)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Z)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_Semicolon)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_U)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_D)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_Q)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_Slash)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_I)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_O)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_G)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_Y)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_LeftBracket)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_K)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_L)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_S)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_E)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_X)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_P)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_T)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_N)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_M)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('a', Key_R) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_H) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_A) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_W) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_F) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Z) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_Semicolon) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_U) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_D) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_Q) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_Slash) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_I) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_O) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_G) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_Y) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_LeftBracket) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_K) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_L) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_S) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_E) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_X) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_P) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_T) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_N) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_M) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'$', LSHIFT(Key_6)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', RALT(Key_N)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'A', LSHIFT(Key_R)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_H)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_A)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_W)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_F)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Z)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_Semicolon)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_U)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_D)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_Q)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_Slash)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_I)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_O)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_G)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_Y)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_LeftBracket)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_K)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_L)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_S)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_E)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_X)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_P)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_T)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_N)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_M)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'a', Key_R) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_H) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_A) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_W) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_F) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Z) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_Semicolon) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_U) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_D) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_Q) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_Slash) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_I) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_O) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_G) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_Y) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_LeftBracket) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_K) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_L) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_S) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_E) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_X) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_P) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_T) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_N) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_M) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_Y)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(Key_6)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_7)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'§', LSHIFT(Key_2)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'ª', RALT(Key_1)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', LSHIFT(Key_5)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', LSHIFT(Key_1)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'·', RALT(Key_5)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(Key_2)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', LSHIFT(Key_4)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_H)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_V)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Ö', LSHIFT(Key_B)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_KeypadMultiply)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ü', LSHIFT(Key_C)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'ß', Key_Quote) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_V) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'ö', Key_B) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ü', Key_C) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'ẞ', LSHIFT(Key_Quote)) \ + OP(L'–', LSHIFT(Key_Comma)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', LSHIFT(Key_Minus)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', LSHIFT(Key_9)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', LSHIFT(Key_0)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', LSHIFT(Key_8)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'†', LSHIFT(Key_Keypad9)) /* U+2020, XKB_KEY_dagger, DAGGER */ \ + OP(L'•', LSHIFT(Key_Period)) /* U+2022, XKB_KEY_enfilledcircbullet, BULLET */ \ + OP(L'‣', LSHIFT(Key_Keypad6)) \ + OP(L'€', LSHIFT(Key_7)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'ℓ', LSHIFT(Key_3)) \ + OP(L'№', RALT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + OP(L'−', RALT(Key_LeftBracket)) \ + OP(L'∓', RALT(Key_KeypadAdd)) \ + OP(L'∕', RALT(Key_KeypadDivide)) \ + OP(L'∖', RALT(Key_KeypadSubtract)) \ + OP(L'≠', RALT(Key_KeypadNumLock)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'␣', LSHIFT(Key_Keypad0)) \ + OP(L'♠', LSHIFT(Key_Keypad3)) \ + OP(L'♣', LSHIFT(Key_Keypad4)) /* U+2663, XKB_KEY_club, BLACK CLUB SUIT */ \ + OP(L'♥', LSHIFT(Key_Keypad2)) /* U+2665, XKB_KEY_heart, BLACK HEART SUIT */ \ + OP(L'♦', LSHIFT(Key_Keypad1)) /* U+2666, XKB_KEY_diamond, BLACK DIAMOND SUIT */ \ + OP(L'✔', LSHIFT(Key_Keypad7)) \ + OP(L'✘', LSHIFT(Key_Keypad8)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_R)) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_V)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_H)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_A)) \ + OP(XKB_KEY_Caps_Lock, LSHIFT(Key_LeftShift)) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_W)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_F)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, LSHIFT(Key_7)) \ + OP(XKB_KEY_F, LSHIFT(Key_Z)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_H, LSHIFT(Key_U)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_D)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_NonUsPound) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_ISO_Level5_Lock, RALT(Key_NonUsBackslashAndPipe)) /* XKB_KEY_ISO_Level5_Lock */ \ + OP(XKB_KEY_ISO_Level5_Shift, Key_NonUsBackslashAndPipe) /* XKB_KEY_ISO_Level5_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_Q)) \ + OP(XKB_KEY_K, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_KP_0, Key_Keypad0) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, Key_Keypad1) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, Key_Keypad2) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, Key_Keypad3) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, Key_Keypad4) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, Key_Keypad5) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, Key_Keypad6) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, Key_Keypad7) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, Key_Keypad8) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, Key_Keypad9) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, RALT(Key_Keypad5)) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, RALT(Key_KeypadDot)) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, RALT(Key_Keypad2)) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, RALT(Key_Keypad1)) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, RALT(Key_Keypad7)) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, RALT(Key_Keypad0)) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, RALT(Key_Keypad4)) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, RALT(Key_Keypad3)) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, RALT(Key_Keypad9)) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, RALT(Key_Keypad6)) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, Key_KeypadDot) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, RALT(Key_Keypad8)) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_I)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_O)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_J)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_O, LSHIFT(Key_G)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_B)) \ + OP(XKB_KEY_P, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Pointer_EnableKeys, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_Pointer_EnableKeys */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_R, LSHIFT(Key_K)) \ + OP(XKB_KEY_Redo, RALT(LSHIFT(Key_B))) /* XKB_KEY_Redo, Redo, again */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_L)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_S)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_C)) \ + OP(XKB_KEY_Undo, RALT(Key_B)) /* XKB_KEY_Undo */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_X)) \ + OP(XKB_KEY_W, LSHIFT(Key_P)) \ + OP(XKB_KEY_X, LSHIFT(Key_T)) \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_Y, LSHIFT(Key_N)) \ + OP(XKB_KEY_Z, LSHIFT(Key_M)) \ + OP(XKB_KEY_a, Key_R) \ + OP(XKB_KEY_adiaeresis, Key_V) \ + OP(XKB_KEY_b, Key_H) \ + OP(XKB_KEY_c, Key_A) \ + OP(XKB_KEY_club, LSHIFT(Key_Keypad4)) \ + OP(XKB_KEY_colon, RALT(Key_N)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_currency, RALT(Key_7)) \ + OP(XKB_KEY_d, Key_W) \ + OP(XKB_KEY_dagger, LSHIFT(Key_Keypad9)) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Backtick)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, Key_RightBracket) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, LSHIFT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_Backtick) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Equals)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_RightBracket)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_Equals) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_1)) \ + OP(XKB_KEY_diamond, LSHIFT(Key_Keypad1)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_6)) \ + OP(XKB_KEY_doublelowquotemark, LSHIFT(Key_8)) \ + OP(XKB_KEY_e, Key_F) \ + OP(XKB_KEY_emdash, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_endash, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_enfilledcircbullet, LSHIFT(Key_Period)) \ + OP(XKB_KEY_exclamdown, RALT(Key_Y)) \ + OP(XKB_KEY_f, Key_Z) \ + OP(XKB_KEY_g, Key_Semicolon) \ + OP(XKB_KEY_guillemotleft, LSHIFT(Key_5)) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_4)) \ + OP(XKB_KEY_h, Key_U) \ + OP(XKB_KEY_heart, LSHIFT(Key_Keypad2)) \ + OP(XKB_KEY_i, Key_D) \ + OP(XKB_KEY_j, Key_Q) \ + OP(XKB_KEY_k, Key_Slash) \ + OP(XKB_KEY_l, Key_I) \ + OP(XKB_KEY_leftdoublequotemark, LSHIFT(Key_9)) \ + OP(XKB_KEY_m, Key_O) \ + OP(XKB_KEY_masculine, RALT(Key_2)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(Key_KeypadMultiply)) \ + OP(XKB_KEY_n, Key_J) \ + OP(XKB_KEY_notequal, RALT(Key_KeypadNumLock)) \ + OP(XKB_KEY_numerosign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_G) \ + OP(XKB_KEY_odiaeresis, Key_B) \ + OP(XKB_KEY_ordfeminine, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_Y) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_5)) \ + OP(XKB_KEY_q, Key_LeftBracket) \ + OP(XKB_KEY_questiondown, RALT(Key_H)) \ + OP(XKB_KEY_r, Key_K) \ + OP(XKB_KEY_rightdoublequotemark, LSHIFT(Key_0)) \ + OP(XKB_KEY_s, Key_L) \ + OP(XKB_KEY_section, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, RALT(Key_Slash)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Quote) \ + OP(XKB_KEY_sterling, RALT(Key_6)) \ + OP(XKB_KEY_t, Key_S) \ + OP(XKB_KEY_u, Key_E) \ + OP(XKB_KEY_udiaeresis, Key_C) \ + OP(XKB_KEY_v, Key_X) \ + OP(XKB_KEY_w, Key_P) \ + OP(XKB_KEY_x, Key_T) \ + OP(XKB_KEY_y, Key_N) \ + OP(XKB_KEY_z, Key_M) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace bone_eszett_home { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace bone_eszett_home +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/deadacute/keymap.h b/src/kaleidoscope/host_keymap/linux/de/deadacute/keymap.h new file mode 100644 index 0000000000..c399e1a03b --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/deadacute/keymap.h @@ -0,0 +1,598 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: deadacute + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Comma)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', Key_Minus) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ſ', RALT(Key_S)) \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'ẞ', RALT(LSHIFT(Key_S))) \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_B))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_NonUsPound)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_V))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_B)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_N)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_V)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_Period)) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_Backtick) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_J)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_belowmacron, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_belowmacron */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_Semicolon)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_V)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Comma)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_N)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Minus) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace deadacute { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace deadacute +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/deadgraveacute/keymap.h b/src/kaleidoscope/host_keymap/linux/de/deadgraveacute/keymap.h new file mode 100644 index 0000000000..c597e8d065 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/deadgraveacute/keymap.h @@ -0,0 +1,598 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: deadgraveacute + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(LSHIFT(Key_NonUsPound))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(LSHIFT(Key_NonUsPound))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Comma)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', Key_Minus) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ſ', RALT(Key_S)) \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'ẞ', RALT(LSHIFT(Key_S))) \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_B))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_NonUsPound)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_V))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_B)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_N)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_V)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_Period)) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_Backtick) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_J)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_belowmacron, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_belowmacron */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_Semicolon)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_V)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Comma)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_N)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Minus) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace deadgraveacute { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace deadgraveacute +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/deadtilde/keymap.h b/src/kaleidoscope/host_keymap/linux/de/deadtilde/keymap.h new file mode 100644 index 0000000000..3c6f68b1bd --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/deadtilde/keymap.h @@ -0,0 +1,593 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: deadtilde + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Comma)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', Key_Minus) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ſ', RALT(Key_S)) \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'ẞ', RALT(LSHIFT(Key_S))) \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_B))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_NonUsPound)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_V))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_B)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_N)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_V)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_Period)) \ + OP(L'′', RALT(Key_Backtick)) \ + OP(L'″', RALT(LSHIFT(Key_Backtick))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_J)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_belowmacron, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_belowmacron */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_Backtick) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_Semicolon)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_V)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Comma)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_N)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Minus) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace deadtilde { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace deadtilde +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/dsb/keymap.h b/src/kaleidoscope/host_keymap/linux/de/dsb/keymap.h new file mode 100644 index 0000000000..90662d635e --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/dsb/keymap.h @@ -0,0 +1,589 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: dsb + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ó', RALT(LSHIFT(Key_O))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ó', RALT(Key_O)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ć', RALT(LSHIFT(Key_C))) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', RALT(Key_C)) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', RALT(LSHIFT(Key_V))) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', RALT(Key_V)) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ě', RALT(LSHIFT(Key_E))) /* U+011a, XKB_KEY_Ecaron, LATIN CAPITAL LETTER E WITH CARON */ \ + OP(L'ě', RALT(Key_E)) /* U+011b, XKB_KEY_ecaron, LATIN SMALL LETTER E WITH CARON */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ń', RALT(LSHIFT(Key_N))) /* U+0143, XKB_KEY_Nacute, LATIN CAPITAL LETTER N WITH ACUTE */ \ + OP(L'ń', RALT(Key_N)) /* U+0144, XKB_KEY_nacute, LATIN SMALL LETTER N WITH ACUTE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŕ', RALT(LSHIFT(Key_R))) /* U+0154, XKB_KEY_Racute, LATIN CAPITAL LETTER R WITH ACUTE */ \ + OP(L'ŕ', RALT(Key_R)) /* U+0155, XKB_KEY_racute, LATIN SMALL LETTER R WITH ACUTE */ \ + OP(L'Ś', RALT(LSHIFT(Key_S))) /* U+015a, XKB_KEY_Sacute, LATIN CAPITAL LETTER S WITH ACUTE */ \ + OP(L'ś', RALT(Key_S)) /* U+015b, XKB_KEY_sacute, LATIN SMALL LETTER S WITH ACUTE */ \ + OP(L'Š', RALT(LSHIFT(Key_D))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_D)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ź', RALT(LSHIFT(Key_X))) /* U+0179, XKB_KEY_Zacute, LATIN CAPITAL LETTER Z WITH ACUTE */ \ + OP(L'ź', RALT(Key_X)) /* U+017a, XKB_KEY_zacute, LATIN SMALL LETTER Z WITH ACUTE */ \ + OP(L'Ž', RALT(LSHIFT(Key_Z))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_Z)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(LSHIFT(Key_T))) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'₵', RALT(Key_T)) \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Ecaron, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Nacute, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Racute, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Sacute, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zacute, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, RALT(Key_C)) \ + OP(XKB_KEY_ccaron, RALT(Key_V)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_ecaron, RALT(Key_E)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nacute, RALT(Key_N)) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_racute, RALT(Key_R)) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_sacute, RALT(Key_S)) \ + OP(XKB_KEY_scaron, RALT(Key_D)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zacute, RALT(Key_X)) \ + OP(XKB_KEY_zcaron, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace dsb { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dsb +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/dsb_qwertz/keymap.h b/src/kaleidoscope/host_keymap/linux/de/dsb_qwertz/keymap.h new file mode 100644 index 0000000000..599b97de2c --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/dsb_qwertz/keymap.h @@ -0,0 +1,585 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: dsb_qwertz + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ó', RALT(LSHIFT(Key_O))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ó', RALT(Key_O)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ć', RALT(LSHIFT(Key_C))) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', RALT(Key_C)) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', RALT(LSHIFT(Key_V))) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', RALT(Key_V)) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ě', RALT(LSHIFT(Key_E))) /* U+011a, XKB_KEY_Ecaron, LATIN CAPITAL LETTER E WITH CARON */ \ + OP(L'ě', RALT(Key_E)) /* U+011b, XKB_KEY_ecaron, LATIN SMALL LETTER E WITH CARON */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ń', RALT(LSHIFT(Key_N))) /* U+0143, XKB_KEY_Nacute, LATIN CAPITAL LETTER N WITH ACUTE */ \ + OP(L'ń', RALT(Key_N)) /* U+0144, XKB_KEY_nacute, LATIN SMALL LETTER N WITH ACUTE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŕ', RALT(LSHIFT(Key_R))) /* U+0154, XKB_KEY_Racute, LATIN CAPITAL LETTER R WITH ACUTE */ \ + OP(L'ŕ', RALT(Key_R)) /* U+0155, XKB_KEY_racute, LATIN SMALL LETTER R WITH ACUTE */ \ + OP(L'Ś', RALT(LSHIFT(Key_S))) /* U+015a, XKB_KEY_Sacute, LATIN CAPITAL LETTER S WITH ACUTE */ \ + OP(L'ś', RALT(Key_S)) /* U+015b, XKB_KEY_sacute, LATIN SMALL LETTER S WITH ACUTE */ \ + OP(L'Š', RALT(LSHIFT(Key_D))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_D)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ź', RALT(LSHIFT(Key_U))) /* U+0179, XKB_KEY_Zacute, LATIN CAPITAL LETTER Z WITH ACUTE */ \ + OP(L'ź', RALT(Key_U)) /* U+017a, XKB_KEY_zacute, LATIN SMALL LETTER Z WITH ACUTE */ \ + OP(L'Ž', RALT(LSHIFT(Key_Y))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_Y)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(LSHIFT(Key_T))) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'₵', RALT(Key_T)) \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Ecaron, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Nacute, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Racute, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Sacute, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Zacute, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, RALT(Key_C)) \ + OP(XKB_KEY_ccaron, RALT(Key_V)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_ecaron, RALT(Key_E)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nacute, RALT(Key_N)) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_racute, RALT(Key_R)) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_sacute, RALT(Key_S)) \ + OP(XKB_KEY_scaron, RALT(Key_D)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_z, Key_Y) \ + OP(XKB_KEY_zacute, RALT(Key_U)) \ + OP(XKB_KEY_zcaron, RALT(Key_Y)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace dsb_qwertz { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dsb_qwertz +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/dvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/de/dvorak/keymap.h new file mode 100644 index 0000000000..4c6bd31dcd --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/dvorak/keymap.h @@ -0,0 +1,512 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: dvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_Slash) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_Slash)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_NonUsPound) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_RightBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_E)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_W)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_Equals) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Equals)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', Key_LeftBracket) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_J)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_F)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_Quote)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_K)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_O)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_P)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', LSHIFT(Key_RightBracket)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_NonUsPound)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_J) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_F) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_Quote) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_K) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_O) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_P) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_4)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_Minus)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_Slash) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_Slash)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_NonUsPound) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_RightBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_E)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_W)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_Equals) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Equals)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', Key_LeftBracket) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_J)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_F)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_Quote)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_K)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_O)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_P)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', LSHIFT(Key_RightBracket)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_NonUsPound)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_J) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_F) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_Quote) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_K) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_O) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_P) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_4)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_Minus)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(Key_6)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_NonUsPound))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_I)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'­', RALT(Key_NonUsPound)) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'®', RALT(Key_K)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_E))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'Ä', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Ó', RALT(LSHIFT(Key_S))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', LSHIFT(Key_Z)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'Ü', LSHIFT(Key_Q)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'ß', LSHIFT(Key_LeftBracket)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_NonUsBackslashAndPipe) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'ó', RALT(Key_S)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', Key_Z) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ü', Key_Q) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'ą', RALT(LSHIFT(Key_A))) /* U+0105, XKB_KEY_aogonek, LATIN SMALL LETTER A WITH OGONEK */ \ + OP(L'Ć', RALT(LSHIFT(Key_I))) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ę', RALT(LSHIFT(Key_D))) /* U+0119, XKB_KEY_eogonek, LATIN SMALL LETTER E WITH OGONEK */ \ + OP(L'Ł', RALT(LSHIFT(Key_Quote))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_Quote)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ń', RALT(LSHIFT(Key_L))) /* U+0143, XKB_KEY_Nacute, LATIN CAPITAL LETTER N WITH ACUTE */ \ + OP(L'ń', RALT(Key_L)) /* U+0144, XKB_KEY_nacute, LATIN SMALL LETTER N WITH ACUTE */ \ + OP(L'Ś', RALT(LSHIFT(Key_Semicolon))) /* U+015a, XKB_KEY_Sacute, LATIN CAPITAL LETTER S WITH ACUTE */ \ + OP(L'ś', RALT(Key_Semicolon)) /* U+015b, XKB_KEY_sacute, LATIN SMALL LETTER S WITH ACUTE */ \ + OP(L'Ż', RALT(LSHIFT(Key_P))) /* U+017b, XKB_KEY_Zabovedot, LATIN CAPITAL LETTER Z WITH DOT ABOVE */ \ + OP(L'ż', RALT(Key_P)) /* U+017c, XKB_KEY_zabovedot, LATIN SMALL LETTER Z WITH DOT ABOVE */ \ + OP(L'€', RALT(Key_D)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(Key_O)) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cacute, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_J)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_D)) \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_F)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Nacute, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Z)) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_K)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Sacute, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_O)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_G)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_P)) \ + OP(XKB_KEY_Zabovedot, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_aogonek, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_Slash)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_Backtick) \ + OP(XKB_KEY_asciitilde, RALT(Key_Minus)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bar, RALT(Key_4)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(Key_6)) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_colon, LSHIFT(Key_E)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_copyright, RALT(Key_I)) \ + OP(XKB_KEY_d, Key_J) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_E)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, RALT(Key_RightBracket)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_W))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_6))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_W)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Z))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_Z)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_eogonek, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_greater, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hyphen, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_i, Key_F) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_l, Key_Quote) \ + OP(XKB_KEY_less, Key_Equals) \ + OP(XKB_KEY_lstroke, RALT(Key_Quote)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_NonUsPound) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_nacute, RALT(Key_L)) \ + OP(XKB_KEY_numbersign, Key_Slash) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_oacute, RALT(Key_S)) \ + OP(XKB_KEY_odiaeresis, Key_Z) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, Key_LeftBracket) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_K) \ + OP(XKB_KEY_registered, RALT(Key_K)) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_sacute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_W)) \ + OP(XKB_KEY_slash, Key_RightBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_t, Key_O) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(Key_O)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_G) \ + OP(XKB_KEY_udiaeresis, Key_Q) \ + OP(XKB_KEY_underscore, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_z, Key_P) \ + OP(XKB_KEY_zabovedot, RALT(Key_P)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace dvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/hu/keymap.h b/src/kaleidoscope/host_keymap/linux/de/hu/keymap.h new file mode 100644 index 0000000000..1fd13408e3 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/hu/keymap.h @@ -0,0 +1,605 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: hu + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_RightBracket))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', Key_Equals) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Comma)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_Quote))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'É', RALT(LSHIFT(Key_Semicolon))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(LSHIFT(Key_I))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', RALT(LSHIFT(Key_Equals))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ú', RALT(LSHIFT(Key_U))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', Key_Minus) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', RALT(Key_Quote)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'é', RALT(Key_Semicolon)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', RALT(Key_I)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ó', RALT(Key_Equals)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ú', RALT(Key_U)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ő', RALT(LSHIFT(Key_O))) /* U+0150, XKB_KEY_Odoubleacute, LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'ő', RALT(Key_O)) /* U+0151, XKB_KEY_odoubleacute, LATIN SMALL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ű', RALT(LSHIFT(Key_LeftBracket))) /* U+0170, XKB_KEY_Udoubleacute, LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ű', RALT(Key_LeftBracket)) /* U+0171, XKB_KEY_udoubleacute, LATIN SMALL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ſ', RALT(Key_S)) \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'ẞ', RALT(LSHIFT(Key_S))) \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_B))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_NonUsPound)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_V))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_B)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_N)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_V)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_Period)) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Odoubleacute, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Udoubleacute, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_Quote)) \ + OP(XKB_KEY_acute, Key_Equals) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_Backtick) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_J)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_belowmacron, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_belowmacron */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_V)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, RALT(Key_Equals)) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_odoubleacute, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Comma)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_N)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Minus) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, RALT(Key_U)) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_udoubleacute, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace hu { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace hu +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/koy/keymap.h b/src/kaleidoscope/host_keymap/linux/de/koy/keymap.h new file mode 100644 index 0000000000..3dc48ce116 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/koy/keymap.h @@ -0,0 +1,451 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: koy + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('$', LSHIFT(Key_6)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_R) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_W) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', RALT(Key_N)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('A', LSHIFT(Key_S)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Quote)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_A)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_F)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_Slash)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_Q)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_O)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Period)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_E)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_M)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_K)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_J)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Y)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_Z)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_LeftBracket)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('a', Key_S) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Quote) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_A) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_F) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_Slash) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_Q) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_O) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Period) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_E) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_M) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_K) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_J) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Y) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_Z) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_LeftBracket) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'$', LSHIFT(Key_6)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_R) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_W) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', RALT(Key_N)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'A', LSHIFT(Key_S)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Quote)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_A)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_F)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_Slash)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_Q)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_O)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Period)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_E)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_M)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_K)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_J)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Y)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_Z)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_LeftBracket)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'a', Key_S) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Quote) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_A) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_F) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_Slash) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_Q) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_O) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Period) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_E) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_M) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_K) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_J) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Y) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_Z) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_LeftBracket) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_Y)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(Key_6)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_7)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'§', LSHIFT(Key_2)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'ª', RALT(Key_1)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', LSHIFT(Key_5)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', LSHIFT(Key_1)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'·', RALT(Key_5)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(Key_2)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', LSHIFT(Key_4)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_H)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_C)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Ö', LSHIFT(Key_B)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_KeypadMultiply)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ü', LSHIFT(Key_V)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'ß', Key_P) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_C) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'ö', Key_B) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ü', Key_V) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'ẞ', LSHIFT(Key_P)) \ + OP(L'–', LSHIFT(Key_R)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', LSHIFT(Key_Minus)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', LSHIFT(Key_9)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', LSHIFT(Key_0)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', LSHIFT(Key_8)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'†', LSHIFT(Key_Keypad9)) /* U+2020, XKB_KEY_dagger, DAGGER */ \ + OP(L'•', LSHIFT(Key_W)) /* U+2022, XKB_KEY_enfilledcircbullet, BULLET */ \ + OP(L'‣', LSHIFT(Key_Keypad6)) \ + OP(L'€', LSHIFT(Key_7)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'ℓ', LSHIFT(Key_3)) \ + OP(L'№', RALT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + OP(L'−', RALT(Key_LeftBracket)) \ + OP(L'∓', RALT(Key_KeypadAdd)) \ + OP(L'∕', RALT(Key_KeypadDivide)) \ + OP(L'∖', RALT(Key_KeypadSubtract)) \ + OP(L'≠', RALT(Key_KeypadNumLock)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'␣', LSHIFT(Key_Keypad0)) \ + OP(L'♠', LSHIFT(Key_Keypad3)) \ + OP(L'♣', LSHIFT(Key_Keypad4)) /* U+2663, XKB_KEY_club, BLACK CLUB SUIT */ \ + OP(L'♥', LSHIFT(Key_Keypad2)) /* U+2665, XKB_KEY_heart, BLACK HEART SUIT */ \ + OP(L'♦', LSHIFT(Key_Keypad1)) /* U+2666, XKB_KEY_diamond, BLACK DIAMOND SUIT */ \ + OP(L'✔', LSHIFT(Key_Keypad7)) \ + OP(L'✘', LSHIFT(Key_Keypad8)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_S)) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_C)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, LSHIFT(Key_LeftShift)) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, LSHIFT(Key_7)) \ + OP(XKB_KEY_F, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_A)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_F)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_NonUsPound) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_ISO_Level5_Lock, RALT(Key_NonUsBackslashAndPipe)) /* XKB_KEY_ISO_Level5_Lock */ \ + OP(XKB_KEY_ISO_Level5_Shift, Key_NonUsBackslashAndPipe) /* XKB_KEY_ISO_Level5_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_K, LSHIFT(Key_Q)) \ + OP(XKB_KEY_KP_0, Key_Keypad0) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, Key_Keypad1) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, Key_Keypad2) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, Key_Keypad3) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, Key_Keypad4) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, Key_Keypad5) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, Key_Keypad6) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, Key_Keypad7) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, Key_Keypad8) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, Key_Keypad9) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, RALT(Key_Keypad5)) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, RALT(Key_KeypadDot)) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, RALT(Key_Keypad2)) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, RALT(Key_Keypad1)) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, RALT(Key_Keypad7)) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, RALT(Key_Keypad0)) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, RALT(Key_Keypad4)) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, RALT(Key_Keypad3)) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, RALT(Key_Keypad9)) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, RALT(Key_Keypad6)) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, Key_KeypadDot) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, RALT(Key_Keypad8)) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_O)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_O, LSHIFT(Key_E)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_B)) \ + OP(XKB_KEY_P, LSHIFT(Key_M)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Pointer_EnableKeys, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_Pointer_EnableKeys */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_K)) \ + OP(XKB_KEY_Redo, RALT(LSHIFT(Key_B))) /* XKB_KEY_Redo, Redo, again */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_J)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_G)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_V)) \ + OP(XKB_KEY_Undo, RALT(Key_B)) /* XKB_KEY_Undo */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Y)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_Z)) \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_a, Key_S) \ + OP(XKB_KEY_adiaeresis, Key_C) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_club, LSHIFT(Key_Keypad4)) \ + OP(XKB_KEY_colon, RALT(Key_N)) \ + OP(XKB_KEY_comma, Key_R) \ + OP(XKB_KEY_currency, RALT(Key_7)) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dagger, LSHIFT(Key_Keypad9)) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Backtick)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, Key_RightBracket) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, LSHIFT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_Backtick) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Equals)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_RightBracket)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_Equals) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_1)) \ + OP(XKB_KEY_diamond, LSHIFT(Key_Keypad1)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_6)) \ + OP(XKB_KEY_doublelowquotemark, LSHIFT(Key_8)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_emdash, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_endash, LSHIFT(Key_R)) \ + OP(XKB_KEY_enfilledcircbullet, LSHIFT(Key_W)) \ + OP(XKB_KEY_exclamdown, RALT(Key_Y)) \ + OP(XKB_KEY_f, Key_Quote) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_guillemotleft, LSHIFT(Key_5)) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_4)) \ + OP(XKB_KEY_h, Key_A) \ + OP(XKB_KEY_heart, LSHIFT(Key_Keypad2)) \ + OP(XKB_KEY_i, Key_F) \ + OP(XKB_KEY_j, Key_Slash) \ + OP(XKB_KEY_k, Key_Q) \ + OP(XKB_KEY_l, Key_O) \ + OP(XKB_KEY_leftdoublequotemark, LSHIFT(Key_9)) \ + OP(XKB_KEY_m, Key_Period) \ + OP(XKB_KEY_masculine, RALT(Key_2)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(Key_KeypadMultiply)) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_notequal, RALT(Key_KeypadNumLock)) \ + OP(XKB_KEY_numerosign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_E) \ + OP(XKB_KEY_odiaeresis, Key_B) \ + OP(XKB_KEY_ordfeminine, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_M) \ + OP(XKB_KEY_period, Key_W) \ + OP(XKB_KEY_periodcentered, RALT(Key_5)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_questiondown, RALT(Key_H)) \ + OP(XKB_KEY_r, Key_K) \ + OP(XKB_KEY_rightdoublequotemark, LSHIFT(Key_0)) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_section, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, RALT(Key_Slash)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_P) \ + OP(XKB_KEY_sterling, RALT(Key_6)) \ + OP(XKB_KEY_t, Key_J) \ + OP(XKB_KEY_u, Key_G) \ + OP(XKB_KEY_udiaeresis, Key_V) \ + OP(XKB_KEY_v, Key_Y) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_Z) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_z, Key_LeftBracket) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace koy { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace koy +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/lld/keymap.h b/src/kaleidoscope/host_keymap/linux/de/lld/keymap.h new file mode 100644 index 0000000000..9290bbb517 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/lld/keymap.h @@ -0,0 +1,596 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: lld + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_RightBracket))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Comma)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ë', RALT(LSHIFT(Key_P))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'ß', Key_Minus) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ë', RALT(Key_P)) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ſ', RALT(Key_S)) \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'ẞ', RALT(LSHIFT(Key_S))) \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_B))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_NonUsPound)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_V))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_B)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_N)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_V)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_Period)) \ + OP(L'′', RALT(Key_Backtick)) \ + OP(L'″', RALT(LSHIFT(Key_Backtick))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_J)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_belowmacron, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_belowmacron */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_Backtick) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_Semicolon)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_V)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_ediaeresis, RALT(Key_P)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Comma)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_N)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Minus) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace lld { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace lld +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/mac/keymap.h b/src/kaleidoscope/host_keymap/linux/de/mac/keymap.h new file mode 100644 index 0000000000..13584ef368 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/mac/keymap.h @@ -0,0 +1,571 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: mac + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_L)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_6)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_8)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_7)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_9)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_L)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_6)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_8)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_7)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_9)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(Key_U)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_G)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_H)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Q)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_RightBracket))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'·', RALT(Key_LeftBracket)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_U))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', RALT(LSHIFT(Key_A))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Û', RALT(LSHIFT(Key_I))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', Key_Minus) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', RALT(Key_A)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ſ', RALT(Key_S)) \ + OP(L'ẞ', RALT(LSHIFT(Key_S))) \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_B))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_NonUsPound)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_V))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_B)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_V)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_Period)) \ + OP(L'′', RALT(Key_Backtick)) \ + OP(L'″', RALT(LSHIFT(Key_Backtick))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_A)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_L)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_7)) \ + OP(XKB_KEY_braceleft, RALT(Key_8)) \ + OP(XKB_KEY_braceright, RALT(Key_9)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_6)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_G)) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_J)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_belowmacron, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_belowmacron */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_Backtick) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_diaeresis, RALT(Key_U)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_V)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Q)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_ordfeminine, RALT(Key_H)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Minus) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace mac { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mac +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/mac_nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/de/mac_nodeadkeys/keymap.h new file mode 100644 index 0000000000..a62ef4db4d --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/mac_nodeadkeys/keymap.h @@ -0,0 +1,578 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: mac_nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_L)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_6)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_8)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_7)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_9)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_L)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_6)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_8)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_7)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_9)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(Key_U)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_G)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_H)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Q)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_RightBracket))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', Key_Equals) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'·', RALT(Key_Comma)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¸', RALT(Key_Equals)) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_U))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', RALT(LSHIFT(Key_A))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Û', RALT(LSHIFT(Key_I))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', Key_Minus) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', RALT(Key_A)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ſ', RALT(Key_S)) \ + OP(L'ẞ', RALT(LSHIFT(Key_S))) \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_B))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_NonUsPound)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_V))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_B)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_V)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_Period)) \ + OP(L'″', RALT(LSHIFT(Key_Backtick))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, Key_Equals) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_A)) \ + OP(XKB_KEY_asciicircum, Key_Backtick) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_L)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_7)) \ + OP(XKB_KEY_braceleft, RALT(Key_8)) \ + OP(XKB_KEY_braceright, RALT(Key_9)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_6)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cedilla, RALT(Key_Equals)) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_G)) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_J)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_belowmacron, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_belowmacron */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_diaeresis, RALT(Key_U)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_V)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Q)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_ordfeminine, RALT(Key_H)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Comma)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Minus) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace mac_nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mac_nodeadkeys +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/neo/keymap.h b/src/kaleidoscope/host_keymap/linux/de/neo/keymap.h new file mode 100644 index 0000000000..0e7b777fab --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/neo/keymap.h @@ -0,0 +1,451 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: neo + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('$', LSHIFT(Key_6)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', RALT(Key_N)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('A', LSHIFT(Key_D)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_R)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_Semicolon)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_F)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_O)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_I)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_U)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_S)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_Slash)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_Y)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_E)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_G)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_V)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_P)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_K)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_H)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_L)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_A)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_W)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_T)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_Q)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Quote)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_B)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('a', Key_D) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_R) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_Semicolon) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_F) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_O) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_I) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_U) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_S) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_Slash) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_Y) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_E) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_G) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_V) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_P) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_K) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_H) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_L) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_A) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_W) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_T) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_Q) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Quote) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_B) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'$', LSHIFT(Key_6)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', RALT(Key_N)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'A', LSHIFT(Key_D)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_R)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_Semicolon)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_F)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_O)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_I)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_U)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_S)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_Slash)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_Y)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_E)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_G)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_V)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_P)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_K)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_H)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_L)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_A)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_W)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_T)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_Q)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Quote)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_B)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'a', Key_D) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_R) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_Semicolon) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_F) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_O) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_I) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_U) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_S) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_Slash) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_Y) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_E) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_G) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_V) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_P) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_K) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_H) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_L) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_A) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_W) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_T) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_Q) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Quote) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_B) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_Y)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(Key_6)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_7)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'§', LSHIFT(Key_2)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'ª', RALT(Key_1)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', LSHIFT(Key_5)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', LSHIFT(Key_1)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'·', RALT(Key_5)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(Key_2)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', LSHIFT(Key_4)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_H)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_C)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Ö', LSHIFT(Key_X)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_KeypadMultiply)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ü', LSHIFT(Key_Z)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'ß', Key_LeftBracket) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_C) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'ö', Key_X) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ü', Key_Z) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'ẞ', LSHIFT(Key_LeftBracket)) \ + OP(L'–', LSHIFT(Key_Comma)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', LSHIFT(Key_Minus)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', LSHIFT(Key_9)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', LSHIFT(Key_0)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', LSHIFT(Key_8)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'†', LSHIFT(Key_Keypad9)) /* U+2020, XKB_KEY_dagger, DAGGER */ \ + OP(L'•', LSHIFT(Key_Period)) /* U+2022, XKB_KEY_enfilledcircbullet, BULLET */ \ + OP(L'‣', LSHIFT(Key_Keypad6)) \ + OP(L'€', LSHIFT(Key_7)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'ℓ', LSHIFT(Key_3)) \ + OP(L'№', RALT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + OP(L'−', RALT(Key_LeftBracket)) \ + OP(L'∓', RALT(Key_KeypadAdd)) \ + OP(L'∕', RALT(Key_KeypadDivide)) \ + OP(L'∖', RALT(Key_KeypadSubtract)) \ + OP(L'≠', RALT(Key_KeypadNumLock)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'␣', LSHIFT(Key_Keypad0)) \ + OP(L'♠', LSHIFT(Key_Keypad3)) \ + OP(L'♣', LSHIFT(Key_Keypad4)) /* U+2663, XKB_KEY_club, BLACK CLUB SUIT */ \ + OP(L'♥', LSHIFT(Key_Keypad2)) /* U+2665, XKB_KEY_heart, BLACK HEART SUIT */ \ + OP(L'♦', LSHIFT(Key_Keypad1)) /* U+2666, XKB_KEY_diamond, BLACK DIAMOND SUIT */ \ + OP(L'✔', LSHIFT(Key_Keypad7)) \ + OP(L'✘', LSHIFT(Key_Keypad8)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_D)) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_C)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_R)) \ + OP(XKB_KEY_Caps_Lock, LSHIFT(Key_LeftShift)) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_F)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, LSHIFT(Key_7)) \ + OP(XKB_KEY_F, LSHIFT(Key_O)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_I)) \ + OP(XKB_KEY_H, LSHIFT(Key_U)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_S)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_NonUsPound) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_ISO_Level5_Lock, RALT(Key_NonUsBackslashAndPipe)) /* XKB_KEY_ISO_Level5_Lock */ \ + OP(XKB_KEY_ISO_Level5_Shift, Key_NonUsBackslashAndPipe) /* XKB_KEY_ISO_Level5_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_K, LSHIFT(Key_Y)) \ + OP(XKB_KEY_KP_0, Key_Keypad0) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, Key_Keypad1) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, Key_Keypad2) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, Key_Keypad3) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, Key_Keypad4) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, Key_Keypad5) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, Key_Keypad6) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, Key_Keypad7) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, Key_Keypad8) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, Key_Keypad9) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, RALT(Key_Keypad5)) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, RALT(Key_KeypadDot)) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, RALT(Key_Keypad2)) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, RALT(Key_Keypad1)) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, RALT(Key_Keypad7)) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, RALT(Key_Keypad0)) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, RALT(Key_Keypad4)) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, RALT(Key_Keypad3)) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, RALT(Key_Keypad9)) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, RALT(Key_Keypad6)) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, Key_KeypadDot) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, RALT(Key_Keypad8)) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_E)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_J)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_O, LSHIFT(Key_G)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_X)) \ + OP(XKB_KEY_P, LSHIFT(Key_V)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Pointer_EnableKeys, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_Pointer_EnableKeys */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_P)) \ + OP(XKB_KEY_R, LSHIFT(Key_K)) \ + OP(XKB_KEY_Redo, RALT(LSHIFT(Key_B))) /* XKB_KEY_Redo, Redo, again */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_H)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_L)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_A)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Undo, RALT(Key_B)) /* XKB_KEY_Undo */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_W)) \ + OP(XKB_KEY_W, LSHIFT(Key_T)) \ + OP(XKB_KEY_X, LSHIFT(Key_Q)) \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Z, LSHIFT(Key_B)) \ + OP(XKB_KEY_a, Key_D) \ + OP(XKB_KEY_adiaeresis, Key_C) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_c, Key_R) \ + OP(XKB_KEY_club, LSHIFT(Key_Keypad4)) \ + OP(XKB_KEY_colon, RALT(Key_N)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_currency, RALT(Key_7)) \ + OP(XKB_KEY_d, Key_Semicolon) \ + OP(XKB_KEY_dagger, LSHIFT(Key_Keypad9)) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Backtick)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, Key_RightBracket) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, LSHIFT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_Backtick) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Equals)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_RightBracket)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_Equals) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_1)) \ + OP(XKB_KEY_diamond, LSHIFT(Key_Keypad1)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_6)) \ + OP(XKB_KEY_doublelowquotemark, LSHIFT(Key_8)) \ + OP(XKB_KEY_e, Key_F) \ + OP(XKB_KEY_emdash, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_endash, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_enfilledcircbullet, LSHIFT(Key_Period)) \ + OP(XKB_KEY_exclamdown, RALT(Key_Y)) \ + OP(XKB_KEY_f, Key_O) \ + OP(XKB_KEY_g, Key_I) \ + OP(XKB_KEY_guillemotleft, LSHIFT(Key_5)) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_4)) \ + OP(XKB_KEY_h, Key_U) \ + OP(XKB_KEY_heart, LSHIFT(Key_Keypad2)) \ + OP(XKB_KEY_i, Key_S) \ + OP(XKB_KEY_j, Key_Slash) \ + OP(XKB_KEY_k, Key_Y) \ + OP(XKB_KEY_l, Key_E) \ + OP(XKB_KEY_leftdoublequotemark, LSHIFT(Key_9)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(Key_2)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(Key_KeypadMultiply)) \ + OP(XKB_KEY_n, Key_J) \ + OP(XKB_KEY_notequal, RALT(Key_KeypadNumLock)) \ + OP(XKB_KEY_numerosign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_G) \ + OP(XKB_KEY_odiaeresis, Key_X) \ + OP(XKB_KEY_ordfeminine, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_V) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_5)) \ + OP(XKB_KEY_q, Key_P) \ + OP(XKB_KEY_questiondown, RALT(Key_H)) \ + OP(XKB_KEY_r, Key_K) \ + OP(XKB_KEY_rightdoublequotemark, LSHIFT(Key_0)) \ + OP(XKB_KEY_s, Key_H) \ + OP(XKB_KEY_section, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, RALT(Key_Slash)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_LeftBracket) \ + OP(XKB_KEY_sterling, RALT(Key_6)) \ + OP(XKB_KEY_t, Key_L) \ + OP(XKB_KEY_u, Key_A) \ + OP(XKB_KEY_udiaeresis, Key_Z) \ + OP(XKB_KEY_v, Key_W) \ + OP(XKB_KEY_w, Key_T) \ + OP(XKB_KEY_x, Key_Q) \ + OP(XKB_KEY_y, Key_Quote) \ + OP(XKB_KEY_z, Key_B) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace neo { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace neo +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/neo_qwerty/keymap.h b/src/kaleidoscope/host_keymap/linux/de/neo_qwerty/keymap.h new file mode 100644 index 0000000000..d450d00c06 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/neo_qwerty/keymap.h @@ -0,0 +1,451 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: neo_qwerty + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('$', LSHIFT(Key_6)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', RALT(Key_N)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'$', LSHIFT(Key_6)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', RALT(Key_N)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_Y)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(Key_6)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_7)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'§', LSHIFT(Key_2)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'ª', RALT(Key_1)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', LSHIFT(Key_5)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', LSHIFT(Key_1)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'·', RALT(Key_5)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(Key_2)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', LSHIFT(Key_4)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_H)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_KeypadMultiply)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'ß', Key_Minus) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'ẞ', LSHIFT(Key_Minus)) \ + OP(L'–', LSHIFT(Key_Comma)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', LSHIFT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', LSHIFT(Key_9)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', LSHIFT(Key_0)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', LSHIFT(Key_8)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'†', LSHIFT(Key_Keypad9)) /* U+2020, XKB_KEY_dagger, DAGGER */ \ + OP(L'•', LSHIFT(Key_Period)) /* U+2022, XKB_KEY_enfilledcircbullet, BULLET */ \ + OP(L'‣', LSHIFT(Key_Keypad6)) \ + OP(L'€', LSHIFT(Key_7)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'ℓ', LSHIFT(Key_3)) \ + OP(L'№', RALT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + OP(L'−', RALT(Key_LeftBracket)) \ + OP(L'∓', RALT(Key_KeypadAdd)) \ + OP(L'∕', RALT(Key_KeypadDivide)) \ + OP(L'∖', RALT(Key_KeypadSubtract)) \ + OP(L'≠', RALT(Key_KeypadNumLock)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'␣', LSHIFT(Key_Keypad0)) \ + OP(L'♠', LSHIFT(Key_Keypad3)) \ + OP(L'♣', LSHIFT(Key_Keypad4)) /* U+2663, XKB_KEY_club, BLACK CLUB SUIT */ \ + OP(L'♥', LSHIFT(Key_Keypad2)) /* U+2665, XKB_KEY_heart, BLACK HEART SUIT */ \ + OP(L'♦', LSHIFT(Key_Keypad1)) /* U+2666, XKB_KEY_diamond, BLACK DIAMOND SUIT */ \ + OP(L'✔', LSHIFT(Key_Keypad7)) \ + OP(L'✘', LSHIFT(Key_Keypad8)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, LSHIFT(Key_LeftShift)) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, LSHIFT(Key_7)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_NonUsPound) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_ISO_Level5_Lock, RALT(Key_NonUsBackslashAndPipe)) /* XKB_KEY_ISO_Level5_Lock */ \ + OP(XKB_KEY_ISO_Level5_Shift, Key_NonUsBackslashAndPipe) /* XKB_KEY_ISO_Level5_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, Key_Keypad0) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, Key_Keypad1) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, Key_Keypad2) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, Key_Keypad3) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, Key_Keypad4) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, Key_Keypad5) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, Key_Keypad6) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, Key_Keypad7) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, Key_Keypad8) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, Key_Keypad9) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, RALT(Key_Keypad5)) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, RALT(Key_KeypadDot)) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, RALT(Key_Keypad2)) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, RALT(Key_Keypad1)) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, RALT(Key_Keypad7)) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, RALT(Key_Keypad0)) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, RALT(Key_Keypad4)) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, RALT(Key_Keypad3)) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, RALT(Key_Keypad9)) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, RALT(Key_Keypad6)) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, Key_KeypadDot) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, RALT(Key_Keypad8)) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Pointer_EnableKeys, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_Pointer_EnableKeys */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Redo, RALT(LSHIFT(Key_B))) /* XKB_KEY_Redo, Redo, again */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Undo, RALT(Key_B)) /* XKB_KEY_Undo */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_club, LSHIFT(Key_Keypad4)) \ + OP(XKB_KEY_colon, RALT(Key_N)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_currency, RALT(Key_7)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dagger, LSHIFT(Key_Keypad9)) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Backtick)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, Key_RightBracket) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, LSHIFT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_Backtick) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Equals)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_RightBracket)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_Equals) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_1)) \ + OP(XKB_KEY_diamond, LSHIFT(Key_Keypad1)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_6)) \ + OP(XKB_KEY_doublelowquotemark, LSHIFT(Key_8)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_endash, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_enfilledcircbullet, LSHIFT(Key_Period)) \ + OP(XKB_KEY_exclamdown, RALT(Key_Y)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_guillemotleft, LSHIFT(Key_5)) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_4)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_heart, LSHIFT(Key_Keypad2)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, LSHIFT(Key_9)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(Key_2)) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_KeypadMultiply)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notequal, RALT(Key_KeypadNumLock)) \ + OP(XKB_KEY_numerosign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_ordfeminine, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_5)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_questiondown, RALT(Key_H)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rightdoublequotemark, LSHIFT(Key_0)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, RALT(Key_Slash)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Minus) \ + OP(XKB_KEY_sterling, RALT(Key_6)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace neo_qwerty { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace neo_qwerty +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/neo_qwertz/keymap.h b/src/kaleidoscope/host_keymap/linux/de/neo_qwertz/keymap.h new file mode 100644 index 0000000000..9efcc73146 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/neo_qwertz/keymap.h @@ -0,0 +1,451 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: neo_qwertz + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('$', LSHIFT(Key_6)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', RALT(Key_N)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'$', LSHIFT(Key_6)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', RALT(Key_N)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_Y)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(Key_6)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_7)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'§', LSHIFT(Key_2)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'ª', RALT(Key_1)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', LSHIFT(Key_5)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', LSHIFT(Key_1)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'·', RALT(Key_5)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(Key_2)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', LSHIFT(Key_4)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_H)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_KeypadMultiply)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'ß', Key_Minus) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'ẞ', LSHIFT(Key_Minus)) \ + OP(L'–', LSHIFT(Key_Comma)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', LSHIFT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', LSHIFT(Key_9)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', LSHIFT(Key_0)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', LSHIFT(Key_8)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'†', LSHIFT(Key_Keypad9)) /* U+2020, XKB_KEY_dagger, DAGGER */ \ + OP(L'•', LSHIFT(Key_Period)) /* U+2022, XKB_KEY_enfilledcircbullet, BULLET */ \ + OP(L'‣', LSHIFT(Key_Keypad6)) \ + OP(L'€', LSHIFT(Key_7)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'ℓ', LSHIFT(Key_3)) \ + OP(L'№', RALT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + OP(L'−', RALT(Key_LeftBracket)) \ + OP(L'∓', RALT(Key_KeypadAdd)) \ + OP(L'∕', RALT(Key_KeypadDivide)) \ + OP(L'∖', RALT(Key_KeypadSubtract)) \ + OP(L'≠', RALT(Key_KeypadNumLock)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'␣', LSHIFT(Key_Keypad0)) \ + OP(L'♠', LSHIFT(Key_Keypad3)) \ + OP(L'♣', LSHIFT(Key_Keypad4)) /* U+2663, XKB_KEY_club, BLACK CLUB SUIT */ \ + OP(L'♥', LSHIFT(Key_Keypad2)) /* U+2665, XKB_KEY_heart, BLACK HEART SUIT */ \ + OP(L'♦', LSHIFT(Key_Keypad1)) /* U+2666, XKB_KEY_diamond, BLACK DIAMOND SUIT */ \ + OP(L'✔', LSHIFT(Key_Keypad7)) \ + OP(L'✘', LSHIFT(Key_Keypad8)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, LSHIFT(Key_LeftShift)) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, LSHIFT(Key_7)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_NonUsPound) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_ISO_Level5_Lock, RALT(Key_NonUsBackslashAndPipe)) /* XKB_KEY_ISO_Level5_Lock */ \ + OP(XKB_KEY_ISO_Level5_Shift, Key_NonUsBackslashAndPipe) /* XKB_KEY_ISO_Level5_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, Key_Keypad0) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, Key_Keypad1) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, Key_Keypad2) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, Key_Keypad3) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, Key_Keypad4) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, Key_Keypad5) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, Key_Keypad6) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, Key_Keypad7) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, Key_Keypad8) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, Key_Keypad9) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, RALT(Key_Keypad5)) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, RALT(Key_KeypadDot)) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, RALT(Key_Keypad2)) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, RALT(Key_Keypad1)) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, RALT(Key_Keypad7)) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, RALT(Key_Keypad0)) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, RALT(Key_Keypad4)) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, RALT(Key_Keypad3)) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, RALT(Key_Keypad9)) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, RALT(Key_Keypad6)) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, Key_KeypadDot) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, RALT(Key_Keypad8)) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Pointer_EnableKeys, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_Pointer_EnableKeys */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Redo, RALT(LSHIFT(Key_B))) /* XKB_KEY_Redo, Redo, again */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Undo, RALT(Key_B)) /* XKB_KEY_Undo */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_club, LSHIFT(Key_Keypad4)) \ + OP(XKB_KEY_colon, RALT(Key_N)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_currency, RALT(Key_7)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dagger, LSHIFT(Key_Keypad9)) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Backtick)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, Key_RightBracket) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, LSHIFT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_Backtick) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Equals)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_RightBracket)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_Equals) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_1)) \ + OP(XKB_KEY_diamond, LSHIFT(Key_Keypad1)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_6)) \ + OP(XKB_KEY_doublelowquotemark, LSHIFT(Key_8)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_endash, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_enfilledcircbullet, LSHIFT(Key_Period)) \ + OP(XKB_KEY_exclamdown, RALT(Key_Y)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_guillemotleft, LSHIFT(Key_5)) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_4)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_heart, LSHIFT(Key_Keypad2)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, LSHIFT(Key_9)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(Key_2)) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_KeypadMultiply)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notequal, RALT(Key_KeypadNumLock)) \ + OP(XKB_KEY_numerosign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_ordfeminine, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_5)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_questiondown, RALT(Key_H)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rightdoublequotemark, LSHIFT(Key_0)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, RALT(Key_Slash)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Minus) \ + OP(XKB_KEY_sterling, RALT(Key_6)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace neo_qwertz { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace neo_qwertz +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/de/nodeadkeys/keymap.h new file mode 100644 index 0000000000..f8c4ab3d16 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/nodeadkeys/keymap.h @@ -0,0 +1,598 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(Key_LeftBracket)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_RightBracket))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', Key_Equals) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Comma)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¸', RALT(Key_Equals)) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', Key_Minus) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ſ', RALT(Key_S)) \ + OP(L'˝', RALT(Key_Semicolon)) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'ẞ', RALT(LSHIFT(Key_S))) \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_B))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_NonUsPound)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_V))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_B)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_N)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_V)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_Period)) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, Key_Equals) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_Backtick) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cedilla, RALT(Key_Equals)) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_J)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_belowmacron, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_belowmacron */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_diaeresis, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_V)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Comma)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_N)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Minus) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace nodeadkeys +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/pl/keymap.h b/src/kaleidoscope/host_keymap/linux/de/pl/keymap.h new file mode 100644 index 0000000000..331e4a4856 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/pl/keymap.h @@ -0,0 +1,605 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: pl + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(Key_LeftBracket)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_RightBracket))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', Key_Equals) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Comma)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¸', RALT(Key_Equals)) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', RALT(LSHIFT(Key_O))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', Key_Minus) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ó', RALT(Key_O)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ą', RALT(LSHIFT(Key_A))) /* U+0104, XKB_KEY_Aogonek, LATIN CAPITAL LETTER A WITH OGONEK */ \ + OP(L'ą', RALT(Key_A)) /* U+0105, XKB_KEY_aogonek, LATIN SMALL LETTER A WITH OGONEK */ \ + OP(L'Ć', RALT(LSHIFT(Key_C))) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', RALT(Key_C)) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ę', RALT(LSHIFT(Key_E))) /* U+0118, XKB_KEY_Eogonek, LATIN CAPITAL LETTER E WITH OGONEK */ \ + OP(L'ę', RALT(Key_E)) /* U+0119, XKB_KEY_eogonek, LATIN SMALL LETTER E WITH OGONEK */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ń', RALT(LSHIFT(Key_N))) /* U+0143, XKB_KEY_Nacute, LATIN CAPITAL LETTER N WITH ACUTE */ \ + OP(L'ń', RALT(Key_N)) /* U+0144, XKB_KEY_nacute, LATIN SMALL LETTER N WITH ACUTE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ś', RALT(LSHIFT(Key_S))) /* U+015a, XKB_KEY_Sacute, LATIN CAPITAL LETTER S WITH ACUTE */ \ + OP(L'ś', RALT(Key_S)) /* U+015b, XKB_KEY_sacute, LATIN SMALL LETTER S WITH ACUTE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ź', RALT(LSHIFT(Key_X))) /* U+0179, XKB_KEY_Zacute, LATIN CAPITAL LETTER Z WITH ACUTE */ \ + OP(L'ź', RALT(Key_X)) /* U+017a, XKB_KEY_zacute, LATIN SMALL LETTER Z WITH ACUTE */ \ + OP(L'Ż', RALT(LSHIFT(Key_Y))) /* U+017b, XKB_KEY_Zabovedot, LATIN CAPITAL LETTER Z WITH DOT ABOVE */ \ + OP(L'ż', RALT(Key_Y)) /* U+017c, XKB_KEY_zabovedot, LATIN SMALL LETTER Z WITH DOT ABOVE */ \ + OP(L'˝', RALT(Key_Semicolon)) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_B))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_NonUsPound)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_V))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_B)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_V)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_Period)) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aogonek, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Eogonek, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Nacute, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Sacute, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Zabovedot, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Zacute, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, Key_Equals) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_aogonek, RALT(Key_A)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_Backtick) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, RALT(Key_C)) \ + OP(XKB_KEY_cedilla, RALT(Key_Equals)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_J)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_belowmacron, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_belowmacron */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_diaeresis, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_V)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_eogonek, RALT(Key_E)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nacute, RALT(Key_N)) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, RALT(Key_O)) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Comma)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_sacute, RALT(Key_S)) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Minus) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_z, Key_Y) \ + OP(XKB_KEY_zabovedot, RALT(Key_Y)) \ + OP(XKB_KEY_zacute, RALT(Key_X)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace pl { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace pl +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/qwerty/keymap.h b/src/kaleidoscope/host_keymap/linux/de/qwerty/keymap.h new file mode 100644 index 0000000000..96459d4c42 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/qwerty/keymap.h @@ -0,0 +1,593 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: qwerty + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Z))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Y)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_RightBracket))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Comma)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', Key_Minus) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ſ', RALT(Key_S)) \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'ẞ', RALT(LSHIFT(Key_S))) \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_B))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_NonUsPound)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_V))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_B)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_N)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_V)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_Period)) \ + OP(L'′', RALT(Key_Backtick)) \ + OP(L'″', RALT(LSHIFT(Key_Backtick))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Z)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_J)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_belowmacron, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_belowmacron */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_Backtick) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_Semicolon)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_V)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Y)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Z)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Comma)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_N)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Minus) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace qwerty { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace qwerty +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/ro/keymap.h b/src/kaleidoscope/host_keymap/linux/de/ro/keymap.h new file mode 100644 index 0000000000..e8c38d8dcb --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/ro/keymap.h @@ -0,0 +1,601 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: ro + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_RightBracket))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Comma)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Â', RALT(LSHIFT(Key_A))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', Key_Minus) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'â', RALT(Key_A)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ă', RALT(LSHIFT(Key_Quote))) /* U+0102, XKB_KEY_Abreve, LATIN CAPITAL LETTER A WITH BREVE */ \ + OP(L'ă', RALT(Key_Quote)) /* U+0103, XKB_KEY_abreve, LATIN SMALL LETTER A WITH BREVE */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ş', RALT(LSHIFT(Key_S))) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', RALT(Key_S)) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ţ', RALT(LSHIFT(Key_T))) /* U+0162, XKB_KEY_Tcedilla, LATIN CAPITAL LETTER T WITH CEDILLA */ \ + OP(L'ţ', RALT(Key_T)) /* U+0163, XKB_KEY_tcedilla, LATIN SMALL LETTER T WITH CEDILLA */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_B))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_NonUsPound)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_V))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_B)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_N)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_V)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_Period)) \ + OP(L'′', RALT(Key_Backtick)) \ + OP(L'″', RALT(LSHIFT(Key_Backtick))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Abreve, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tcedilla, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abreve, RALT(Key_Quote)) \ + OP(XKB_KEY_acircumflex, RALT(Key_A)) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_J)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_belowmacron, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_belowmacron */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_Backtick) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_Semicolon)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_V)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Comma)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_N)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, RALT(Key_S)) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Minus) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_tcedilla, RALT(Key_T)) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace ro { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ro +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/ro_nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/de/ro_nodeadkeys/keymap.h new file mode 100644 index 0000000000..9793b4ab5c --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/ro_nodeadkeys/keymap.h @@ -0,0 +1,604 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: ro_nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(Key_LeftBracket)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_RightBracket))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', Key_Equals) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Comma)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¸', RALT(Key_Equals)) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Â', RALT(LSHIFT(Key_A))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', Key_Minus) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'â', RALT(Key_A)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ă', RALT(LSHIFT(Key_Quote))) /* U+0102, XKB_KEY_Abreve, LATIN CAPITAL LETTER A WITH BREVE */ \ + OP(L'ă', RALT(Key_Quote)) /* U+0103, XKB_KEY_abreve, LATIN SMALL LETTER A WITH BREVE */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ş', RALT(LSHIFT(Key_S))) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', RALT(Key_S)) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ţ', RALT(LSHIFT(Key_T))) /* U+0162, XKB_KEY_Tcedilla, LATIN CAPITAL LETTER T WITH CEDILLA */ \ + OP(L'ţ', RALT(Key_T)) /* U+0163, XKB_KEY_tcedilla, LATIN SMALL LETTER T WITH CEDILLA */ \ + OP(L'˝', RALT(Key_Semicolon)) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_B))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_NonUsPound)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_V))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_B)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_N)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_V)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_Period)) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Abreve, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tcedilla, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abreve, RALT(Key_Quote)) \ + OP(XKB_KEY_acircumflex, RALT(Key_A)) \ + OP(XKB_KEY_acute, Key_Equals) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_Backtick) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cedilla, RALT(Key_Equals)) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_J)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_belowmacron, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_belowmacron */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_diaeresis, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_V)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Comma)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_N)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, RALT(Key_S)) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Minus) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_tcedilla, RALT(Key_T)) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace ro_nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ro_nodeadkeys +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/ru-recom/keymap.h b/src/kaleidoscope/host_keymap/linux/de/ru-recom/keymap.h new file mode 100644 index 0000000000..b8f4fc5663 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/ru-recom/keymap.h @@ -0,0 +1,553 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: ru-recom + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_NonUsPound)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(LSHIFT(Key_NonUsPound))) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_Backtick)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', Key_Minus) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_NonUsPound)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(LSHIFT(Key_NonUsPound))) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_Backtick)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', Key_Minus) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Comma)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'̀', LSHIFT(Key_Equals)) \ + OP(L'́', Key_Equals) \ + OP(L'̇', RALT(LSHIFT(Key_Equals))) \ + OP(L'̣', RALT(Key_Equals)) \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'Ё', LSHIFT(Key_Semicolon)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'Є', RALT(LSHIFT(Key_Quote))) /* U+0404, XKB_KEY_Ukrainian_IE, CYRILLIC CAPITAL LETTER UKRAINIAN IE */ \ + OP(L'І', RALT(LSHIFT(Key_I))) /* U+0406, XKB_KEY_Ukrainian_I, CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'Ї', RALT(LSHIFT(Key_J))) /* U+0407, XKB_KEY_Ukrainian_YI, CYRILLIC CAPITAL LETTER YI */ \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_W)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_G)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_H)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_I)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_J)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_X)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_Y)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_C)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_RightBracket)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_Q)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_NonUsPound)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_Z)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_V)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_LeftBracket)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Backtick)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_W) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_G) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_H) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_NonUsBackslashAndPipe) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_I) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_J) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_X) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_Y) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_C) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_RightBracket) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_Q) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_NonUsPound) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_Z) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_V) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_LeftBracket) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Backtick) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Semicolon) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'є', RALT(Key_Quote)) /* U+0454, XKB_KEY_Ukrainian_ie, CYRILLIC SMALL LETTER UKRAINIAN IE */ \ + OP(L'і', RALT(Key_I)) /* U+0456, XKB_KEY_Ukrainian_i, CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'ї', RALT(Key_J)) /* U+0457, XKB_KEY_Ukrainian_yi, CYRILLIC SMALL LETTER YI */ \ + OP(L'Ґ', RALT(LSHIFT(Key_G))) /* U+0490, XKB_KEY_Ukrainian_GHE_WITH_UPTURN, CYRILLIC CAPITAL LETTER GHE WITH UPTURN */ \ + OP(L'ґ', RALT(Key_G)) /* U+0491, XKB_KEY_Ukrainian_ghe_with_upturn, CYRILLIC SMALL LETTER GHE WITH UPTURN */ \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_B))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_N))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_V))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_B)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_N)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_V)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_Period)) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_C) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_G) \ + OP(XKB_KEY_Cyrillic_ha, Key_X) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_NonUsPound) \ + OP(XKB_KEY_Cyrillic_i, Key_I) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_io, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_shcha, Key_Q) \ + OP(XKB_KEY_Cyrillic_shorti, Key_J) \ + OP(XKB_KEY_Cyrillic_softsign, Key_V) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_Y) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_ve, Key_W) \ + OP(XKB_KEY_Cyrillic_ya, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_yeru, Key_Z) \ + OP(XKB_KEY_Cyrillic_yu, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_ze, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_Cyrillic_zhe, Key_H) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Ukrainian_GHE_WITH_UPTURN, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Ukrainian_I, RALT(LSHIFT(Key_I))) /* XKB_KEY_Ukranian_I, deprecated */ \ + OP(XKB_KEY_Ukrainian_IE, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_Ukranian_JE, deprecated */ \ + OP(XKB_KEY_Ukrainian_YI, RALT(LSHIFT(Key_J))) /* XKB_KEY_Ukranian_YI, deprecated */ \ + OP(XKB_KEY_Ukrainian_ghe_with_upturn, RALT(Key_G)) \ + OP(XKB_KEY_Ukrainian_i, RALT(Key_I)) /* XKB_KEY_Ukranian_i, deprecated */ \ + OP(XKB_KEY_Ukrainian_ie, RALT(Key_Quote)) /* XKB_KEY_Ukranian_je, deprecated */ \ + OP(XKB_KEY_Ukrainian_yi, RALT(Key_J)) /* XKB_KEY_Ukranian_yi, deprecated */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_Backtick)) \ + OP(XKB_KEY_asciitilde, Key_Minus) \ + OP(XKB_KEY_asterisk, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_belowdot, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_belowmacron, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_belowmacron */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_Semicolon)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_V)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Comma)) \ + OP(XKB_KEY_plus, RALT(Key_RightBracket)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_N)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace ru_recom { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ru_recom +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/ru-translit/keymap.h b/src/kaleidoscope/host_keymap/linux/de/ru-translit/keymap.h new file mode 100644 index 0000000000..b8257a62e7 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/ru-translit/keymap.h @@ -0,0 +1,553 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: ru-translit + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_NonUsPound)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(LSHIFT(Key_NonUsPound))) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_Backtick)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', Key_Minus) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_NonUsPound)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(LSHIFT(Key_NonUsPound))) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_Backtick)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', Key_Minus) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Comma)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'̀', LSHIFT(Key_Equals)) \ + OP(L'́', Key_Equals) \ + OP(L'̇', RALT(LSHIFT(Key_Equals))) \ + OP(L'̣', RALT(Key_Equals)) \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'Ё', LSHIFT(Key_Semicolon)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'Є', RALT(LSHIFT(Key_Quote))) /* U+0404, XKB_KEY_Ukrainian_IE, CYRILLIC CAPITAL LETTER UKRAINIAN IE */ \ + OP(L'І', RALT(LSHIFT(Key_I))) /* U+0406, XKB_KEY_Ukrainian_I, CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'Ї', RALT(LSHIFT(Key_J))) /* U+0407, XKB_KEY_Ukrainian_YI, CYRILLIC CAPITAL LETTER YI */ \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_V)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_G)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_H)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Y)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_I)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_J)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_X)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_C)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_W)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_Q)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_Z)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_NonUsPound)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_LeftBracket)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Backtick)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_V) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_G) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_H) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Y) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_I) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_J) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_X) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_C) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_NonUsBackslashAndPipe) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_W) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_Q) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_Z) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_NonUsPound) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_LeftBracket) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Backtick) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Semicolon) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'є', RALT(Key_Quote)) /* U+0454, XKB_KEY_Ukrainian_ie, CYRILLIC SMALL LETTER UKRAINIAN IE */ \ + OP(L'і', RALT(Key_I)) /* U+0456, XKB_KEY_Ukrainian_i, CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'ї', RALT(Key_J)) /* U+0457, XKB_KEY_Ukrainian_yi, CYRILLIC SMALL LETTER YI */ \ + OP(L'Ґ', RALT(LSHIFT(Key_G))) /* U+0490, XKB_KEY_Ukrainian_GHE_WITH_UPTURN, CYRILLIC CAPITAL LETTER GHE WITH UPTURN */ \ + OP(L'ґ', RALT(Key_G)) /* U+0491, XKB_KEY_Ukrainian_ghe_with_upturn, CYRILLIC SMALL LETTER GHE WITH UPTURN */ \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_B))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_N))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_V))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_B)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_N)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_V)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_Period)) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_G) \ + OP(XKB_KEY_Cyrillic_ha, Key_X) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_I) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_io, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_W) \ + OP(XKB_KEY_Cyrillic_shcha, Key_Q) \ + OP(XKB_KEY_Cyrillic_shorti, Key_J) \ + OP(XKB_KEY_Cyrillic_softsign, Key_NonUsPound) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_C) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_ve, Key_V) \ + OP(XKB_KEY_Cyrillic_ya, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_yeru, Key_Z) \ + OP(XKB_KEY_Cyrillic_yu, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_ze, Key_Y) \ + OP(XKB_KEY_Cyrillic_zhe, Key_H) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Ukrainian_GHE_WITH_UPTURN, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Ukrainian_I, RALT(LSHIFT(Key_I))) /* XKB_KEY_Ukranian_I, deprecated */ \ + OP(XKB_KEY_Ukrainian_IE, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_Ukranian_JE, deprecated */ \ + OP(XKB_KEY_Ukrainian_YI, RALT(LSHIFT(Key_J))) /* XKB_KEY_Ukranian_YI, deprecated */ \ + OP(XKB_KEY_Ukrainian_ghe_with_upturn, RALT(Key_G)) \ + OP(XKB_KEY_Ukrainian_i, RALT(Key_I)) /* XKB_KEY_Ukranian_i, deprecated */ \ + OP(XKB_KEY_Ukrainian_ie, RALT(Key_Quote)) /* XKB_KEY_Ukranian_je, deprecated */ \ + OP(XKB_KEY_Ukrainian_yi, RALT(Key_J)) /* XKB_KEY_Ukranian_yi, deprecated */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_Backtick)) \ + OP(XKB_KEY_asciitilde, Key_Minus) \ + OP(XKB_KEY_asterisk, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_belowdot, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_belowmacron, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_belowmacron */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_Semicolon)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_V)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Comma)) \ + OP(XKB_KEY_plus, RALT(Key_RightBracket)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_N)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace ru_translit { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ru_translit +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/ru/keymap.h b/src/kaleidoscope/host_keymap/linux/de/ru/keymap.h new file mode 100644 index 0000000000..013b440fc8 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/ru/keymap.h @@ -0,0 +1,554 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: ru + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_NonUsPound)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(LSHIFT(Key_NonUsPound))) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_NonUsPound)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(LSHIFT(Key_NonUsPound))) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Comma)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', Key_Minus) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ſ', RALT(Key_S)) \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'Ё', LSHIFT(Key_Backtick)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_W)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_G)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_X)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Y)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_I)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_J)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_H)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_C)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_Semicolon)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_LeftBracket)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_RightBracket)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_Equals)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_Z)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_V)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_NonUsPound)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Q)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_W) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_G) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_X) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Y) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_I) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_J) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_H) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_C) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_Semicolon) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_LeftBracket) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_RightBracket) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_Equals) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_Z) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_V) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_NonUsPound) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Q) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Backtick) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'ẞ', RALT(LSHIFT(Key_S))) \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_B))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_N))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_V))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_B)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_N)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_V)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_Period)) \ + OP(L'″', RALT(LSHIFT(Key_Backtick))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_G) \ + OP(XKB_KEY_Cyrillic_ha, Key_H) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_Equals) \ + OP(XKB_KEY_Cyrillic_i, Key_I) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_io, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_shcha, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_shorti, Key_J) \ + OP(XKB_KEY_Cyrillic_softsign, Key_V) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_C) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_ve, Key_W) \ + OP(XKB_KEY_Cyrillic_ya, Key_Q) \ + OP(XKB_KEY_Cyrillic_yeru, Key_Z) \ + OP(XKB_KEY_Cyrillic_yu, Key_NonUsPound) \ + OP(XKB_KEY_Cyrillic_ze, Key_Y) \ + OP(XKB_KEY_Cyrillic_zhe, Key_X) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_J)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_belowmacron, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_belowmacron */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_Semicolon)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_V)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Comma)) \ + OP(XKB_KEY_plus, RALT(Key_RightBracket)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_N)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Minus) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace ru { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ru +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/de/standard/keymap.h new file mode 100644 index 0000000000..3d10fd547a --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/standard/keymap.h @@ -0,0 +1,596 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_RightBracket))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Comma)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', Key_Minus) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ſ', RALT(Key_S)) \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'ẞ', RALT(LSHIFT(Key_S))) \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_B))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_NonUsPound)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_V))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_B)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_N)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_V)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_Period)) \ + OP(L'′', RALT(Key_Backtick)) \ + OP(L'″', RALT(LSHIFT(Key_Backtick))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_J)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_belowmacron, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_belowmacron */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_Backtick) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_Semicolon)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_V)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Comma)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_N)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Minus) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/de/sun_type6/keymap.h new file mode 100644 index 0000000000..629b69659e --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/sun_type6/keymap.h @@ -0,0 +1,468 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'ß', Key_Minus) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_Backtick) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_NonUsPound)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Minus) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/sundeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/de/sundeadkeys/keymap.h new file mode 100644 index 0000000000..3233f93d70 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/sundeadkeys/keymap.h @@ -0,0 +1,596 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: sundeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_RightBracket))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Comma)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', Key_Minus) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ſ', RALT(Key_S)) \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'ẞ', RALT(LSHIFT(Key_S))) \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_B))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_NonUsPound)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_V))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_B)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_N)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_V)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_Period)) \ + OP(L'′', RALT(Key_Backtick)) \ + OP(L'″', RALT(LSHIFT(Key_Backtick))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_J)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_belowmacron, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_belowmacron */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_Backtick) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_Semicolon)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_V)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Comma)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_N)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Minus) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace sundeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sundeadkeys +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/tr/keymap.h b/src/kaleidoscope/host_keymap/linux/de/tr/keymap.h new file mode 100644 index 0000000000..dc849395f0 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/tr/keymap.h @@ -0,0 +1,592 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: tr + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_RightBracket))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Comma)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', Key_Minus) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ğ', RALT(LSHIFT(Key_G))) \ + OP(L'ğ', RALT(Key_G)) \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'İ', RALT(LSHIFT(Key_I))) \ + OP(L'ı', RALT(Key_I)) \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ş', RALT(LSHIFT(Key_S))) \ + OP(L'ş', RALT(Key_S)) \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_B))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_NonUsPound)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_V))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_B)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_N)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_V)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_Period)) \ + OP(L'′', RALT(Key_Backtick)) \ + OP(L'″', RALT(LSHIFT(Key_Backtick))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_J)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_belowmacron, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_belowmacron */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_Backtick) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_Semicolon)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_V)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Comma)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_N)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, Key_Minus) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace tr { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace tr +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/de/us/keymap.h b/src/kaleidoscope/host_keymap/linux/de/us/keymap.h new file mode 100644 index 0000000000..d7544e424d --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/de/us/keymap.h @@ -0,0 +1,458 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: de +// variant: us + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'Ä', RALT(LSHIFT(Key_A))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Ö', RALT(LSHIFT(Key_O))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'Ü', RALT(LSHIFT(Key_U))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'ß', RALT(Key_Minus)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'ö', RALT(Key_O)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ü', RALT(Key_U)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_3)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Minus)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace de { +namespace us { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace us +} // namespace de +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/dk/dvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/dk/dvorak/keymap.h new file mode 100644 index 0000000000..207b70c8f5 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/dk/dvorak/keymap.h @@ -0,0 +1,534 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: dk +// variant: dvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_LeftBracket) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_E)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_W)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsPound) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsPound)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Equals) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', Key_RightBracket) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_LeftBracket) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_E)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_W)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsPound) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsPound)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Equals) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', Key_RightBracket) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_D))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_T)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(Key_Backtick)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_Quote))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_I))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_Y)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_NonUsPound)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'­', RALT(Key_Quote)) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'®', RALT(Key_O)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'±', RALT(Key_Minus)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(LSHIFT(Key_LeftBracket))) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_Backtick))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_E)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¸', RALT(LSHIFT(Key_W))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(LSHIFT(Key_NonUsPound))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Å', LSHIFT(Key_Q)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', LSHIFT(Key_Z)) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_H))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(Key_B)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_R))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Semicolon)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'å', Key_Q) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', Key_Z) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_I)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_H)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_7))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', Key_NonUsBackslashAndPipe) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_R)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'İ', RALT(LSHIFT(Key_G))) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'ı', RALT(Key_G)) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'€', RALT(Key_D)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_Q)) \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_H))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_D)) \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_Oslash, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_R))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_ae, Key_Z) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_LeftBracket) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_Q) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_asciitilde, Key_RightBracket) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_Equals) \ + OP(XKB_KEY_bar, Key_Backtick) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(Key_Backtick)) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_ccedilla, RALT(Key_I)) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_colon, LSHIFT(Key_E)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dead_acute, RALT(Key_Equals)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_W)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_LeftBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_RightBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_H)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_hyphen, RALT(Key_Quote)) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_idotless, RALT(Key_G)) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_less, Key_NonUsPound) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(Key_B)) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_Y)) \ + OP(XKB_KEY_oslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(Key_E)) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(Key_Minus)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_registered, RALT(Key_O)) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_W)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Semicolon)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_thorn, RALT(Key_R)) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_yen, RALT(Key_T)) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace dk { +namespace dvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak +} // namespace dk +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/dk/mac/keymap.h b/src/kaleidoscope/host_keymap/linux/dk/mac/keymap.h new file mode 100644 index 0000000000..5c3da9f2fe --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/dk/mac/keymap.h @@ -0,0 +1,570 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: dk +// variant: mac + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_5))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_6)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_Equals))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_A)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'­', RALT(Key_Slash)) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_Slash))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_Minus)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_Backtick))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_A))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', Key_Backtick) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_Backtick)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', LSHIFT(Key_Semicolon)) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_NonUsPound))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', LSHIFT(Key_Quote)) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', Key_Semicolon) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_7))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', Key_Quote) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Oslash, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, Key_Semicolon) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bar, RALT(Key_Equals)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Comma)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_NonUsPound)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Comma))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_hyphen, RALT(Key_Slash)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_onehalf, Key_Backtick) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_A)) \ + OP(XKB_KEY_oslash, Key_Quote) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(Key_Minus)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threequarters, RALT(Key_Backtick)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_6)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace dk { +namespace mac { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mac +} // namespace dk +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/dk/mac_nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/dk/mac_nodeadkeys/keymap.h new file mode 100644 index 0000000000..bc97ffd2ec --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/dk/mac_nodeadkeys/keymap.h @@ -0,0 +1,582 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: dk +// variant: mac_nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_5))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_6)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', Key_RightBracket) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_A)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'­', RALT(Key_Slash)) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_Slash))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_Minus)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', Key_Equals) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_Backtick))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_A))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', Key_Backtick) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_Backtick)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', LSHIFT(Key_Semicolon)) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_NonUsPound))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', LSHIFT(Key_Quote)) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', Key_Semicolon) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_7))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', Key_Quote) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'˛', RALT(LSHIFT(Key_Equals))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Oslash, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, Key_Equals) \ + OP(XKB_KEY_ae, Key_Semicolon) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bar, RALT(Key_Equals)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Comma)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_NonUsPound)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Comma))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_diaeresis, Key_RightBracket) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_hyphen, RALT(Key_Slash)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_onehalf, Key_Backtick) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_A)) \ + OP(XKB_KEY_oslash, Key_Quote) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(Key_Minus)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threequarters, RALT(Key_Backtick)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_6)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace dk { +namespace mac_nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mac_nodeadkeys +} // namespace dk +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/dk/nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/dk/nodeadkeys/keymap.h new file mode 100644 index 0000000000..741af9d9a6 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/dk/nodeadkeys/keymap.h @@ -0,0 +1,578 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: dk +// variant: nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_5))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_6)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', Key_RightBracket) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_A)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_RightBracket))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_Minus)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', Key_Equals) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_Backtick))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¸', RALT(Key_Comma)) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_A))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', Key_Backtick) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_Backtick)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', LSHIFT(Key_Semicolon)) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_NonUsPound))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', LSHIFT(Key_Quote)) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', Key_Semicolon) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_7))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', Key_Quote) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'ˇ', RALT(LSHIFT(Key_Quote))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˙', RALT(LSHIFT(Key_Period))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_Equals))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(Key_NonUsPound)) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Oslash, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_acute, Key_Equals) \ + OP(XKB_KEY_ae, Key_Semicolon) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bar, RALT(Key_Equals)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_cedilla, RALT(Key_Comma)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_diaeresis, Key_RightBracket) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_onehalf, Key_Backtick) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_A)) \ + OP(XKB_KEY_oslash, Key_Quote) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(Key_Minus)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threequarters, RALT(Key_Backtick)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_6)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace dk { +namespace nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace nodeadkeys +} // namespace dk +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/dk/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/dk/standard/keymap.h new file mode 100644 index 0000000000..00fe9150e9 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/dk/standard/keymap.h @@ -0,0 +1,565 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: dk +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_5))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_6)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_Equals))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_A)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_Minus)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_Backtick))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_A))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', Key_Backtick) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_Backtick)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', LSHIFT(Key_Semicolon)) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_NonUsPound))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', LSHIFT(Key_Quote)) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', Key_Semicolon) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_7))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', Key_Quote) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Oslash, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, Key_Semicolon) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bar, RALT(Key_Equals)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Comma)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_NonUsPound)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Comma))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_onehalf, Key_Backtick) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_A)) \ + OP(XKB_KEY_oslash, Key_Quote) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(Key_Minus)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threequarters, RALT(Key_Backtick)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_6)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace dk { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace dk +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/dk/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/dk/sun_type6/keymap.h new file mode 100644 index 0000000000..722b2d8996 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/dk/sun_type6/keymap.h @@ -0,0 +1,467 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: dk +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_5)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_5)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'½', Key_Backtick) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', LSHIFT(Key_Semicolon)) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ø', LSHIFT(Key_Quote)) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', Key_Semicolon) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ø', Key_Quote) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, Key_Semicolon) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(Key_5)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bar, RALT(Key_Equals)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_NonUsPound)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_onehalf, Key_Backtick) \ + OP(XKB_KEY_oslash, Key_Quote) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace dk { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace dk +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/dk/winkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/dk/winkeys/keymap.h new file mode 100644 index 0000000000..b6206029b0 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/dk/winkeys/keymap.h @@ -0,0 +1,565 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: dk +// variant: winkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_5))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_6)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_Equals))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_A)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_Minus)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_Backtick))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_A))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', Key_Backtick) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_Backtick)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', LSHIFT(Key_Semicolon)) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_NonUsPound))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', LSHIFT(Key_Quote)) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', Key_Semicolon) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_7))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', Key_Quote) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Oslash, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, Key_Semicolon) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bar, RALT(Key_Equals)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Comma)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_NonUsPound)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Comma))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_onehalf, Key_Backtick) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_A)) \ + OP(XKB_KEY_oslash, Key_Quote) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(Key_Minus)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threequarters, RALT(Key_Backtick)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_6)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace dk { +namespace winkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace winkeys +} // namespace dk +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/dz/ar/keymap.h b/src/kaleidoscope/host_keymap/linux/dz/ar/keymap.h new file mode 100644 index 0000000000..1de8e3e201 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/dz/ar/keymap.h @@ -0,0 +1,443 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: dz +// variant: ar + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', LSHIFT(Key_O)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'÷', LSHIFT(Key_I)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'؉', RALT(LSHIFT(Key_Backtick))) \ + OP(L'،', LSHIFT(Key_K)) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', LSHIFT(Key_P)) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؜', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', Key_X) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'آ', LSHIFT(Key_N)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_H)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', Key_C) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_Y)) /* U+0625, XKB_KEY_Arabic_hamzaunderalef, ARABIC LETTER ALEF WITH HAMZA BELOW */ \ + OP(L'ئ', Key_Z) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', Key_H) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_F) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', Key_M) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_J) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', Key_E) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_LeftBracket) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', Key_P) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_O) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_RightBracket) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', Key_Backtick) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_V) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_Period) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', Key_A) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', Key_W) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', Key_Q) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', Key_Quote) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', Key_Slash) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', Key_U) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', Key_Y) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_J)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'ف', Key_T) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_R) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', Key_Semicolon) /* U+0643, XKB_KEY_Arabic_kaf, ARABIC LETTER KAF */ \ + OP(L'ل', Key_G) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_L) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_K) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_I) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_Comma) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', Key_N) /* U+0649, XKB_KEY_Arabic_alefmaksura, ARABIC LETTER ALEF MAKSURA */ \ + OP(L'ي', Key_D) /* U+064a, XKB_KEY_Arabic_yeh, ARABIC LETTER YEH */ \ + OP(L'ً', LSHIFT(Key_W)) /* U+064b, XKB_KEY_Arabic_fathatan, ARABIC FATHATAN */ \ + OP(L'ٌ', LSHIFT(Key_R)) /* U+064c, XKB_KEY_Arabic_dammatan, ARABIC DAMMATAN */ \ + OP(L'ٍ', LSHIFT(Key_S)) /* U+064d, XKB_KEY_Arabic_kasratan, ARABIC KASRATAN */ \ + OP(L'َ', LSHIFT(Key_Q)) /* U+064e, XKB_KEY_Arabic_fatha, ARABIC FATHA */ \ + OP(L'ُ', LSHIFT(Key_E)) /* U+064f, XKB_KEY_Arabic_damma, ARABIC DAMMA */ \ + OP(L'ِ', LSHIFT(Key_A)) /* U+0650, XKB_KEY_Arabic_kasra, ARABIC KASRA */ \ + OP(L'ّ', LSHIFT(Key_Backtick)) /* U+0651, XKB_KEY_Arabic_shadda, ARABIC SHADDA */ \ + OP(L'ْ', LSHIFT(Key_X)) /* U+0652, XKB_KEY_Arabic_sukun, ARABIC SUKUN */ \ + OP(L'٠', RALT(Key_0)) /* U+0660, XKB_KEY_Arabic_0, ARABIC-INDIC DIGIT ZERO */ \ + OP(L'١', RALT(Key_1)) /* U+0661, XKB_KEY_Arabic_1, ARABIC-INDIC DIGIT ONE */ \ + OP(L'٢', RALT(Key_2)) /* U+0662, XKB_KEY_Arabic_2, ARABIC-INDIC DIGIT TWO */ \ + OP(L'٣', RALT(Key_3)) /* U+0663, XKB_KEY_Arabic_3, ARABIC-INDIC DIGIT THREE */ \ + OP(L'٤', RALT(Key_4)) /* U+0664, XKB_KEY_Arabic_4, ARABIC-INDIC DIGIT FOUR */ \ + OP(L'٥', RALT(Key_5)) /* U+0665, XKB_KEY_Arabic_5, ARABIC-INDIC DIGIT FIVE */ \ + OP(L'٦', RALT(Key_6)) /* U+0666, XKB_KEY_Arabic_6, ARABIC-INDIC DIGIT SIX */ \ + OP(L'٧', RALT(Key_7)) /* U+0667, XKB_KEY_Arabic_7, ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'٨', RALT(Key_8)) /* U+0668, XKB_KEY_Arabic_8, ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'٩', RALT(Key_9)) /* U+0669, XKB_KEY_Arabic_9, ARABIC-INDIC DIGIT NINE */ \ + OP(L'٪', RALT(Key_Backtick)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', RALT(Key_K)) \ + OP(L'٬', RALT(Key_Comma)) \ + OP(L'٭', RALT(Key_Slash)) \ + OP(L'ٰ', RALT(Key_N)) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٱ', RALT(Key_H)) \ + OP(L'پ', RALT(Key_F)) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', RALT(Key_LeftBracket)) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ژ', RALT(Key_Period)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ڤ', RALT(Key_T)) /* U+06a4, XKB_KEY_Arabic_veh, ARABIC LETTER VEH */ \ + OP(L'گ', RALT(Key_Semicolon)) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'‌', RALT(LSHIFT(Key_Slash))) \ + OP(L'‍', RALT(LSHIFT(Key_Quote))) \ + OP(L'‎', RALT(LSHIFT(Key_P))) \ + OP(L'‏', RALT(LSHIFT(Key_LeftBracket))) \ + OP(L'‑', RALT(LSHIFT(Key_Minus))) \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'…', LSHIFT(Key_NonUsPound)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‪', RALT(LSHIFT(Key_Y))) \ + OP(L'‫', RALT(LSHIFT(Key_U))) \ + OP(L'‬', RALT(LSHIFT(Key_I))) \ + OP(L' ', RALT(LSHIFT(Key_NonUsPound))) \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'⁦', RALT(LSHIFT(Key_Q))) \ + OP(L'⁧', RALT(LSHIFT(Key_W))) \ + OP(L'⁨', RALT(LSHIFT(Key_E))) \ + OP(L'⁩', RALT(LSHIFT(Key_R))) \ + OP(L'≈', RALT(LSHIFT(Key_Equals))) /* U+2248, XKB_KEY_approxeq, ALMOST EQUAL TO */ \ + OP(L'≠', RALT(Key_Equals)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'⟨', RALT(Key_NonUsPound)) \ + OP(L'⟩', RALT(Key_Quote)) \ + OP(L'ﻵ', LSHIFT(Key_B)) \ + OP(L'ﻷ', LSHIFT(Key_G)) \ + OP(L'ﻹ', LSHIFT(Key_T)) \ + OP(L'ﻻ', Key_B) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_0, RALT(Key_0)) \ + OP(XKB_KEY_Arabic_1, RALT(Key_1)) \ + OP(XKB_KEY_Arabic_2, RALT(Key_2)) \ + OP(XKB_KEY_Arabic_3, RALT(Key_3)) \ + OP(XKB_KEY_Arabic_4, RALT(Key_4)) \ + OP(XKB_KEY_Arabic_5, RALT(Key_5)) \ + OP(XKB_KEY_Arabic_6, RALT(Key_6)) \ + OP(XKB_KEY_Arabic_7, RALT(Key_7)) \ + OP(XKB_KEY_Arabic_8, RALT(Key_8)) \ + OP(XKB_KEY_Arabic_9, RALT(Key_9)) \ + OP(XKB_KEY_Arabic_ain, Key_U) \ + OP(XKB_KEY_Arabic_alef, Key_H) \ + OP(XKB_KEY_Arabic_alefmaksura, Key_N) \ + OP(XKB_KEY_Arabic_beh, Key_F) \ + OP(XKB_KEY_Arabic_comma, LSHIFT(Key_K)) \ + OP(XKB_KEY_Arabic_dad, Key_Q) \ + OP(XKB_KEY_Arabic_dal, Key_RightBracket) \ + OP(XKB_KEY_Arabic_damma, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_dammatan, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_fatha, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Arabic_fathatan, LSHIFT(Key_W)) \ + OP(XKB_KEY_Arabic_feh, Key_T) \ + OP(XKB_KEY_Arabic_gaf, RALT(Key_Semicolon)) \ + OP(XKB_KEY_Arabic_ghain, Key_Y) \ + OP(XKB_KEY_Arabic_ha, Key_I) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, Key_P) \ + OP(XKB_KEY_Arabic_hamza, Key_X) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, Key_C) \ + OP(XKB_KEY_Arabic_hamzaonyeh, Key_Z) \ + OP(XKB_KEY_Arabic_hamzaunderalef, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Arabic_jeem, Key_LeftBracket) \ + OP(XKB_KEY_Arabic_jeh, RALT(Key_Period)) \ + OP(XKB_KEY_Arabic_kaf, Key_Semicolon) \ + OP(XKB_KEY_Arabic_kasra, LSHIFT(Key_A)) \ + OP(XKB_KEY_Arabic_kasratan, LSHIFT(Key_S)) \ + OP(XKB_KEY_Arabic_khah, Key_O) \ + OP(XKB_KEY_Arabic_lam, Key_G) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_meem, Key_L) \ + OP(XKB_KEY_Arabic_noon, Key_K) \ + OP(XKB_KEY_Arabic_peh, RALT(Key_F)) \ + OP(XKB_KEY_Arabic_percent, RALT(Key_Backtick)) \ + OP(XKB_KEY_Arabic_qaf, Key_R) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_V) \ + OP(XKB_KEY_Arabic_sad, Key_W) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, LSHIFT(Key_P)) \ + OP(XKB_KEY_Arabic_shadda, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Arabic_sheen, Key_A) \ + OP(XKB_KEY_Arabic_sukun, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_superscript_alef, RALT(Key_N)) \ + OP(XKB_KEY_Arabic_tah, Key_Quote) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_J)) \ + OP(XKB_KEY_Arabic_tcheh, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_Arabic_teh, Key_J) \ + OP(XKB_KEY_Arabic_tehmarbuta, Key_M) \ + OP(XKB_KEY_Arabic_thal, Key_Backtick) \ + OP(XKB_KEY_Arabic_theh, Key_E) \ + OP(XKB_KEY_Arabic_veh, RALT(Key_T)) \ + OP(XKB_KEY_Arabic_waw, Key_Comma) \ + OP(XKB_KEY_Arabic_yeh, Key_D) \ + OP(XKB_KEY_Arabic_zah, Key_Slash) \ + OP(XKB_KEY_Arabic_zain, Key_Period) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_approxeq, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Z)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_V)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_C)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_F)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_D)) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, LSHIFT(Key_I)) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_ellipsis, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_grave, LSHIFT(Key_U)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_less, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_multiply, LSHIFT(Key_O)) \ + OP(XKB_KEY_notequal, RALT(Key_Equals)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_period, LSHIFT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_slash, LSHIFT(Key_L)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, Key_8) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace dz { +namespace ar { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ar +} // namespace dz +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/dz/ber/keymap.h b/src/kaleidoscope/host_keymap/linux/dz/ber/keymap.h new file mode 100644 index 0000000000..13b82830eb --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/dz/ber/keymap.h @@ -0,0 +1,409 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: dz +// variant: ber + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_Slash)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Equals))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', LSHIFT(Key_Backtick)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', LSHIFT(Key_NonUsPound)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¹', RALT(Key_Backtick)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'¿', RALT(Key_M)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', RALT(LSHIFT(Key_0))) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Ç', RALT(LSHIFT(Key_9))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', RALT(LSHIFT(Key_7))) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'É', RALT(LSHIFT(Key_2))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'×', RALT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_RightBracket))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ù', RALT(LSHIFT(Key_Quote))) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'÷', RALT(Key_Period)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_RightBracket)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'‑', RALT(LSHIFT(Key_6))) \ + OP(L'–', RALT(LSHIFT(Key_5))) \ + OP(L'—', RALT(LSHIFT(Key_4))) \ + OP(L'…', RALT(LSHIFT(Key_M))) \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'−', RALT(LSHIFT(Key_Slash))) \ + OP(L'∕', RALT(LSHIFT(Key_Period))) \ + OP(L'≠', RALT(LSHIFT(Key_Minus))) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'≤', RALT(Key_NonUsBackslashAndPipe)) /* U+2264, XKB_KEY_lessthanequal, LESS-THAN OR EQUAL TO */ \ + OP(L'≥', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+2265, XKB_KEY_greaterthanequal, GREATER-THAN OR EQUAL TO */ \ + OP(L'⋅', RALT(LSHIFT(Key_Comma))) \ + OP(L'ⴰ', Key_Q) \ + OP(L'ⴱ', Key_B) \ + OP(L'ⴲ', LSHIFT(Key_B)) \ + OP(L'ⴳ', Key_G) \ + OP(L'ⴴ', RALT(Key_G)) \ + OP(L'ⴵ', LSHIFT(Key_G)) \ + OP(L'ⴶ', RALT(LSHIFT(Key_G))) \ + OP(L'ⴷ', Key_D) \ + OP(L'ⴸ', RALT(Key_D)) \ + OP(L'ⴹ', LSHIFT(Key_D)) \ + OP(L'ⴺ', RALT(LSHIFT(Key_D))) \ + OP(L'ⴻ', Key_E) \ + OP(L'ⴼ', Key_F) \ + OP(L'ⴽ', Key_K) \ + OP(L'ⴾ', RALT(Key_K)) \ + OP(L'ⴿ', LSHIFT(Key_K)) \ + OP(L'ⵀ', Key_H) \ + OP(L'ⵁ', LSHIFT(Key_H)) \ + OP(L'ⵂ', RALT(Key_H)) \ + OP(L'ⵃ', Key_P) \ + OP(L'ⵄ', Key_O) \ + OP(L'ⵅ', Key_X) \ + OP(L'ⵆ', LSHIFT(Key_X)) \ + OP(L'ⵇ', Key_A) \ + OP(L'ⵈ', LSHIFT(Key_A)) \ + OP(L'ⵉ', Key_I) \ + OP(L'ⵊ', Key_J) \ + OP(L'ⵋ', LSHIFT(Key_J)) \ + OP(L'ⵌ', RALT(Key_J)) \ + OP(L'ⵍ', Key_L) \ + OP(L'ⵎ', Key_Semicolon) \ + OP(L'ⵏ', Key_N) \ + OP(L'ⵐ', LSHIFT(Key_N)) \ + OP(L'ⵑ', RALT(Key_N)) \ + OP(L'ⵒ', RALT(Key_B)) \ + OP(L'ⵓ', Key_U) \ + OP(L'ⵔ', Key_R) \ + OP(L'ⵕ', LSHIFT(Key_R)) \ + OP(L'ⵖ', Key_V) \ + OP(L'ⵗ', LSHIFT(Key_V)) \ + OP(L'ⵘ', RALT(Key_V)) \ + OP(L'ⵙ', Key_S) \ + OP(L'ⵚ', LSHIFT(Key_S)) \ + OP(L'ⵛ', Key_C) \ + OP(L'ⵜ', Key_T) \ + OP(L'ⵝ', RALT(Key_T)) \ + OP(L'ⵞ', LSHIFT(Key_C)) \ + OP(L'ⵟ', LSHIFT(Key_T)) \ + OP(L'ⵠ', RALT(LSHIFT(Key_V))) \ + OP(L'ⵡ', Key_Z) \ + OP(L'ⵢ', Key_Y) \ + OP(L'ⵣ', Key_W) \ + OP(L'ⵤ', RALT(Key_W)) \ + OP(L'ⵥ', LSHIFT(Key_W)) \ + OP(L'ⵦ', LSHIFT(Key_E)) \ + OP(L'ⵧ', LSHIFT(Key_O)) \ + OP(L'ⵯ', Key_LeftBracket) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_Agrave, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Egrave, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Ugrave, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_dead_acute, RALT(Key_Quote)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_1)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(Key_Period)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_exclamdown, RALT(Key_Slash)) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_greaterthanequal, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lessthanequal, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_multiply, RALT(Key_Comma)) \ + OP(XKB_KEY_notequal, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_onesuperior, RALT(Key_Backtick)) \ + OP(XKB_KEY_oslash, RALT(Key_RightBracket)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_threesuperior, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, Key_8) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace dz { +namespace ber { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ber +} // namespace dz +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/dz/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/dz/standard/keymap.h new file mode 100644 index 0000000000..6bfbda32ed --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/dz/standard/keymap.h @@ -0,0 +1,615 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: dz +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_Slash)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_E))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_N)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Equals))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', LSHIFT(Key_Backtick)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', LSHIFT(Key_NonUsPound)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¹', RALT(Key_Backtick)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_M)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', RALT(LSHIFT(Key_0))) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Ä', RALT(LSHIFT(Key_A))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_Q))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_9))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', RALT(LSHIFT(Key_7))) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'É', RALT(LSHIFT(Key_2))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ï', RALT(LSHIFT(Key_K))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ô', RALT(LSHIFT(Key_P))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', RALT(LSHIFT(Key_Semicolon))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_RightBracket))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ù', RALT(LSHIFT(Key_Quote))) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'Û', RALT(LSHIFT(Key_U))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', RALT(LSHIFT(Key_J))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_Q)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ï', RALT(Key_K)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ô', RALT(Key_P)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', RALT(Key_Semicolon)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_Period)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_RightBracket)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'û', RALT(Key_U)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', RALT(Key_J)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'ÿ', RALT(Key_Y)) /* U+00ff, XKB_KEY_ydiaeresis, LATIN SMALL LETTER Y WITH DIAERESIS */ \ + OP(L'Č', RALT(LSHIFT(Key_C))) \ + OP(L'č', RALT(Key_C)) \ + OP(L'Ŀ', RALT(LSHIFT(Key_L))) \ + OP(L'ŀ', RALT(Key_L)) \ + OP(L'Ÿ', RALT(LSHIFT(Key_Y))) /* U+0178, XKB_KEY_Ydiaeresis, LATIN CAPITAL LETTER Y WITH DIAERESIS */ \ + OP(L'Ɛ', RALT(LSHIFT(Key_O))) \ + OP(L'Ɣ', RALT(LSHIFT(Key_V))) \ + OP(L'Ǧ', RALT(LSHIFT(Key_G))) /* U+01e6, XKB_KEY_Gcaron, LATIN CAPITAL LETTER G WITH CARON */ \ + OP(L'ǧ', RALT(Key_G)) /* U+01e7, XKB_KEY_gcaron, LATIN SMALL LETTER G WITH CARON */ \ + OP(L'ɛ', RALT(Key_O)) \ + OP(L'ɣ', RALT(Key_V)) \ + OP(L'Ḍ', RALT(LSHIFT(Key_D))) \ + OP(L'ḍ', RALT(Key_D)) \ + OP(L'Ḥ', RALT(LSHIFT(Key_H))) \ + OP(L'ḥ', RALT(Key_H)) \ + OP(L'Ṛ', RALT(LSHIFT(Key_R))) \ + OP(L'ṛ', RALT(Key_R)) \ + OP(L'Ṣ', RALT(LSHIFT(Key_S))) \ + OP(L'ṣ', RALT(Key_S)) \ + OP(L'Ṭ', RALT(LSHIFT(Key_T))) \ + OP(L'ṭ', RALT(Key_T)) \ + OP(L'Ẓ', RALT(LSHIFT(Key_W))) \ + OP(L'ẓ', RALT(Key_W)) \ + OP(L'‑', RALT(LSHIFT(Key_6))) \ + OP(L'–', RALT(LSHIFT(Key_5))) \ + OP(L'—', RALT(LSHIFT(Key_4))) \ + OP(L'‘', RALT(Key_F)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_F))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_Z))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_X))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'…', RALT(LSHIFT(Key_M))) \ + OP(L' ', RALT(LSHIFT(Key_KeypadDot))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'←', RALT(Key_Keypad4)) \ + OP(L'↑', RALT(Key_Keypad8)) \ + OP(L'→', RALT(Key_Keypad6)) \ + OP(L'↓', RALT(Key_B)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'↔', RALT(Key_Keypad5)) \ + OP(L'↕', RALT(Key_Keypad0)) \ + OP(L'↖', RALT(Key_Keypad7)) \ + OP(L'↗', RALT(Key_Keypad9)) \ + OP(L'↘', RALT(Key_Keypad3)) \ + OP(L'↙', RALT(Key_Keypad1)) \ + OP(L'⇐', RALT(LSHIFT(Key_Keypad4))) \ + OP(L'⇑', RALT(LSHIFT(Key_Keypad8))) \ + OP(L'⇒', RALT(LSHIFT(Key_Keypad6))) \ + OP(L'⇓', RALT(LSHIFT(Key_Keypad2))) \ + OP(L'⇔', RALT(LSHIFT(Key_Keypad5))) \ + OP(L'⇕', RALT(LSHIFT(Key_Keypad0))) \ + OP(L'⇖', RALT(LSHIFT(Key_Keypad7))) \ + OP(L'⇗', RALT(LSHIFT(Key_Keypad9))) \ + OP(L'⇘', RALT(LSHIFT(Key_Keypad3))) \ + OP(L'⇙', RALT(LSHIFT(Key_Keypad1))) \ + OP(L'−', RALT(Key_KeypadSubtract)) \ + OP(L'∕', LSHIFT(Key_KeypadDivide)) \ + OP(L'≠', RALT(LSHIFT(Key_Minus))) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'≤', RALT(Key_NonUsBackslashAndPipe)) /* U+2264, XKB_KEY_lessthanequal, LESS-THAN OR EQUAL TO */ \ + OP(L'≥', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+2265, XKB_KEY_greaterthanequal, GREATER-THAN OR EQUAL TO */ \ + OP(L'⋅', LSHIFT(Key_KeypadMultiply)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Agrave, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Egrave, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gcaron, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Ugrave, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Ydiaeresis, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ae, RALT(Key_Q)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Quote)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_1)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_LeftBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(Key_Period)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_downarrow, RALT(Key_B)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_exclamdown, RALT(Key_Slash)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gcaron, RALT(Key_G)) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_greaterthanequal, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_idiaeresis, RALT(Key_K)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_F)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lessthanequal, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_multiply, RALT(Key_Comma)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Spacebar))) \ + OP(XKB_KEY_notequal, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_notsign, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, RALT(Key_P)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_Semicolon)) \ + OP(XKB_KEY_onesuperior, RALT(Key_Backtick)) \ + OP(XKB_KEY_oslash, RALT(Key_RightBracket)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rightarrow, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threesuperior, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, RALT(Key_U)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_J)) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, Key_8) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_ydiaeresis, RALT(Key_Y)) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace dz { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace dz +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ee/dvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/ee/dvorak/keymap.h new file mode 100644 index 0000000000..87dbd292e2 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ee/dvorak/keymap.h @@ -0,0 +1,486 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ee +// variant: dvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_4)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_E))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'½', RALT(Key_8)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'Ä', RALT(LSHIFT(Key_A))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Õ', RALT(LSHIFT(Key_S))) /* U+00d5, XKB_KEY_Otilde, LATIN CAPITAL LETTER O WITH TILDE */ \ + OP(L'Ö', RALT(LSHIFT(Key_D))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'Ü', RALT(LSHIFT(Key_F))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'õ', RALT(Key_S)) /* U+00f5, XKB_KEY_otilde, LATIN SMALL LETTER O WITH TILDE */ \ + OP(L'ö', RALT(Key_D)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ü', RALT(Key_F)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Š', RALT(LSHIFT(Key_Semicolon))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_Semicolon)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ž', RALT(LSHIFT(Key_Slash))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_Slash)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Otilde, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Q) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, Key_Minus) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_colon, LSHIFT(Key_Z)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_E)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Q)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_W))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_W)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Q))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Z))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_9)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_Z)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_odiaeresis, RALT(Key_D)) \ + OP(XKB_KEY_onehalf, RALT(Key_8)) \ + OP(XKB_KEY_otilde, RALT(Key_S)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_plus, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Q)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_scaron, RALT(Key_Semicolon)) \ + OP(XKB_KEY_section, RALT(Key_4)) \ + OP(XKB_KEY_semicolon, Key_Z) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_udiaeresis, RALT(Key_F)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_z, Key_Slash) \ + OP(XKB_KEY_zcaron, RALT(Key_Slash)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ee { +namespace dvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak +} // namespace ee +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ee/nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/ee/nodeadkeys/keymap.h new file mode 100644 index 0000000000..3d43f321f9 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ee/nodeadkeys/keymap.h @@ -0,0 +1,591 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ee +// variant: nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Equals) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Equals) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_RightBracket)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(Key_LeftBracket)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_RightBracket))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'´', RALT(Key_Semicolon)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Õ', LSHIFT(Key_RightBracket)) /* U+00d5, XKB_KEY_Otilde, LATIN CAPITAL LETTER O WITH TILDE */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'õ', Key_RightBracket) /* U+00f5, XKB_KEY_otilde, LATIN SMALL LETTER O WITH TILDE */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Š', RALT(LSHIFT(Key_S))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_S)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ž', RALT(LSHIFT(Key_Z))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_Z)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'ˇ', RALT(LSHIFT(Key_Quote))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_NonUsPound))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_Slash))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˝', RALT(LSHIFT(Key_Semicolon))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Otilde, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_acute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Equals) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_Backtick) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_diaeresis, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_otilde, Key_RightBracket) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, RALT(Key_S)) \ + OP(XKB_KEY_section, RALT(Key_RightBracket)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ee { +namespace nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace nodeadkeys +} // namespace ee +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ee/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/ee/standard/keymap.h new file mode 100644 index 0000000000..cde190e616 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ee/standard/keymap.h @@ -0,0 +1,584 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ee +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_Quote)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Slash)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_Quote)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Slash)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_RightBracket)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Õ', LSHIFT(Key_RightBracket)) /* U+00d5, XKB_KEY_Otilde, LATIN CAPITAL LETTER O WITH TILDE */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'õ', Key_RightBracket) /* U+00f5, XKB_KEY_otilde, LATIN SMALL LETTER O WITH TILDE */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Š', RALT(LSHIFT(Key_S))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_S)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ž', RALT(LSHIFT(Key_Z))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_Z)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'˙', RALT(LSHIFT(Key_Slash))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Otilde, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_Quote)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_Slash)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, Key_Backtick) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_otilde, Key_RightBracket) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, RALT(Key_S)) \ + OP(XKB_KEY_section, RALT(Key_RightBracket)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ee { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace ee +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ee/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/ee/sun_type6/keymap.h new file mode 100644 index 0000000000..b311bd3b8a --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ee/sun_type6/keymap.h @@ -0,0 +1,584 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ee +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_Quote)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_Quote)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_RightBracket)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_NonUsBackslashAndPipe)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Õ', LSHIFT(Key_RightBracket)) /* U+00d5, XKB_KEY_Otilde, LATIN CAPITAL LETTER O WITH TILDE */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'õ', Key_RightBracket) /* U+00f5, XKB_KEY_otilde, LATIN SMALL LETTER O WITH TILDE */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ņ', RALT(LSHIFT(Key_N))) /* U+0145, XKB_KEY_Ncedilla, LATIN CAPITAL LETTER N WITH CEDILLA */ \ + OP(L'ņ', RALT(Key_N)) /* U+0146, XKB_KEY_ncedilla, LATIN SMALL LETTER N WITH CEDILLA */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ž', RALT(LSHIFT(Key_Z))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_Z)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Ncedilla, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Otilde, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_Quote)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, Key_Backtick) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, RALT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_ncedilla, RALT(Key_N)) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_otilde, Key_RightBracket) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_RightBracket)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ee { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace ee +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ee/us/keymap.h b/src/kaleidoscope/host_keymap/linux/ee/us/keymap.h new file mode 100644 index 0000000000..fd93c16595 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ee/us/keymap.h @@ -0,0 +1,470 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ee +// variant: us + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ä', RALT(LSHIFT(Key_Quote))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Õ', RALT(LSHIFT(Key_RightBracket))) /* U+00d5, XKB_KEY_Otilde, LATIN CAPITAL LETTER O WITH TILDE */ \ + OP(L'Ö', RALT(LSHIFT(Key_Semicolon))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'Ü', RALT(LSHIFT(Key_LeftBracket))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'ä', RALT(Key_Quote)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'õ', RALT(Key_RightBracket)) /* U+00f5, XKB_KEY_otilde, LATIN SMALL LETTER O WITH TILDE */ \ + OP(L'ö', RALT(Key_Semicolon)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ü', RALT(Key_LeftBracket)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Š', RALT(LSHIFT(Key_S))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_S)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ž', RALT(LSHIFT(Key_Z))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_Z)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Otilde, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, RALT(Key_Quote)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, RALT(Key_Semicolon)) \ + OP(XKB_KEY_otilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ee { +namespace us { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace us +} // namespace ee +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/epo/legacy/keymap.h b/src/kaleidoscope/host_keymap/linux/epo/legacy/keymap.h new file mode 100644 index 0000000000..2e66124363 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/epo/legacy/keymap.h @@ -0,0 +1,454 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: epo +// variant: legacy + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_6)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_S)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_W)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_6)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_S)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_W)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ĉ', LSHIFT(Key_X)) /* U+0108, XKB_KEY_Ccircumflex, LATIN CAPITAL LETTER C WITH CIRCUMFLEX */ \ + OP(L'ĉ', Key_X) /* U+0109, XKB_KEY_ccircumflex, LATIN SMALL LETTER C WITH CIRCUMFLEX */ \ + OP(L'Ĝ', LSHIFT(Key_Y)) /* U+011c, XKB_KEY_Gcircumflex, LATIN CAPITAL LETTER G WITH CIRCUMFLEX */ \ + OP(L'ĝ', Key_Y) /* U+011d, XKB_KEY_gcircumflex, LATIN SMALL LETTER G WITH CIRCUMFLEX */ \ + OP(L'Ĥ', LSHIFT(Key_Quote)) /* U+0124, XKB_KEY_Hcircumflex, LATIN CAPITAL LETTER H WITH CIRCUMFLEX */ \ + OP(L'ĥ', Key_Quote) /* U+0125, XKB_KEY_hcircumflex, LATIN SMALL LETTER H WITH CIRCUMFLEX */ \ + OP(L'Ĵ', LSHIFT(Key_W)) /* U+0134, XKB_KEY_Jcircumflex, LATIN CAPITAL LETTER J WITH CIRCUMFLEX */ \ + OP(L'ĵ', Key_W) /* U+0135, XKB_KEY_jcircumflex, LATIN SMALL LETTER J WITH CIRCUMFLEX */ \ + OP(L'Ŝ', LSHIFT(Key_Q)) /* U+015c, XKB_KEY_Scircumflex, LATIN CAPITAL LETTER S WITH CIRCUMFLEX */ \ + OP(L'ŝ', Key_Q) /* U+015d, XKB_KEY_scircumflex, LATIN SMALL LETTER S WITH CIRCUMFLEX */ \ + OP(L'Ŭ', LSHIFT(Key_Semicolon)) /* U+016c, XKB_KEY_Ubreve, LATIN CAPITAL LETTER U WITH BREVE */ \ + OP(L'ŭ', Key_Semicolon) /* U+016d, XKB_KEY_ubreve, LATIN SMALL LETTER U WITH BREVE */ \ + OP(L'–', RALT(Key_T)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_R)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_D)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_F)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccircumflex, LSHIFT(Key_X)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gcircumflex, LSHIFT(Key_Y)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Hcircumflex, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_Jcircumflex, LSHIFT(Key_W)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scircumflex, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ubreve, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_6)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_W)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccircumflex, Key_X) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(Key_R)) \ + OP(XKB_KEY_endash, RALT(Key_T)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gcircumflex, Key_Y) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_S)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hcircumflex, Key_Quote) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_jcircumflex, Key_W) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_D)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_F)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scircumflex, Key_Q) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ubreve, Key_Semicolon) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace epo { +namespace legacy { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace legacy +} // namespace epo +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/epo/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/epo/standard/keymap.h new file mode 100644 index 0000000000..511f02b787 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/epo/standard/keymap.h @@ -0,0 +1,478 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: epo +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', RALT(LSHIFT(Key_Y))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', RALT(Key_Y)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_O)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_P)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', RALT(LSHIFT(Key_Y))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', RALT(Key_Y)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_O)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_P)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ĉ', LSHIFT(Key_X)) /* U+0108, XKB_KEY_Ccircumflex, LATIN CAPITAL LETTER C WITH CIRCUMFLEX */ \ + OP(L'ĉ', Key_X) /* U+0109, XKB_KEY_ccircumflex, LATIN SMALL LETTER C WITH CIRCUMFLEX */ \ + OP(L'Ĝ', LSHIFT(Key_W)) /* U+011c, XKB_KEY_Gcircumflex, LATIN CAPITAL LETTER G WITH CIRCUMFLEX */ \ + OP(L'ĝ', Key_W) /* U+011d, XKB_KEY_gcircumflex, LATIN SMALL LETTER G WITH CIRCUMFLEX */ \ + OP(L'Ĥ', LSHIFT(Key_RightBracket)) /* U+0124, XKB_KEY_Hcircumflex, LATIN CAPITAL LETTER H WITH CIRCUMFLEX */ \ + OP(L'ĥ', Key_RightBracket) /* U+0125, XKB_KEY_hcircumflex, LATIN SMALL LETTER H WITH CIRCUMFLEX */ \ + OP(L'Ĵ', LSHIFT(Key_LeftBracket)) /* U+0134, XKB_KEY_Jcircumflex, LATIN CAPITAL LETTER J WITH CIRCUMFLEX */ \ + OP(L'ĵ', Key_LeftBracket) /* U+0135, XKB_KEY_jcircumflex, LATIN SMALL LETTER J WITH CIRCUMFLEX */ \ + OP(L'Ŝ', LSHIFT(Key_Q)) /* U+015c, XKB_KEY_Scircumflex, LATIN CAPITAL LETTER S WITH CIRCUMFLEX */ \ + OP(L'ŝ', Key_Q) /* U+015d, XKB_KEY_scircumflex, LATIN SMALL LETTER S WITH CIRCUMFLEX */ \ + OP(L'Ŭ', LSHIFT(Key_Y)) /* U+016c, XKB_KEY_Ubreve, LATIN CAPITAL LETTER U WITH BREVE */ \ + OP(L'ŭ', Key_Y) /* U+016d, XKB_KEY_ubreve, LATIN SMALL LETTER U WITH BREVE */ \ + OP(L'–', RALT(Key_N)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_M)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_A)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_S)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_D)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_F)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccircumflex, LSHIFT(Key_X)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gcircumflex, LSHIFT(Key_W)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Hcircumflex, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_Jcircumflex, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scircumflex, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ubreve, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_X, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_O)) \ + OP(XKB_KEY_braceright, RALT(Key_P)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccircumflex, Key_X) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(Key_M)) \ + OP(XKB_KEY_endash, RALT(Key_N)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gcircumflex, Key_W) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hcircumflex, Key_RightBracket) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_jcircumflex, Key_LeftBracket) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_D)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_A)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_F)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_S)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scircumflex, Key_Q) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ubreve, Key_Y) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, RALT(Key_W)) \ + OP(XKB_KEY_x, RALT(Key_X)) \ + OP(XKB_KEY_y, RALT(Key_Y)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace epo { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace epo +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/es/ast/keymap.h b/src/kaleidoscope/host_keymap/linux/es/ast/keymap.h new file mode 100644 index 0000000000..a708e95be7 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/es/ast/keymap.h @@ -0,0 +1,571 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: es +// variant: ast + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', Key_Equals) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', LSHIFT(Key_Backtick)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', LSHIFT(Key_3)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', Key_Backtick) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', LSHIFT(Key_Equals)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_NonUsPound)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', LSHIFT(Key_Semicolon)) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_NonUsPound) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', Key_Semicolon) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'Ḥ', RALT(LSHIFT(Key_H))) \ + OP(L'ḥ', RALT(Key_H)) \ + OP(L'Ḷ', RALT(LSHIFT(Key_L))) /* U+1e36, XKB_KEY_Lbelowdot, LATIN CAPITAL LETTER L WITH DOT BELOW */ \ + OP(L'ḷ', RALT(Key_L)) /* U+1e37, XKB_KEY_lbelowdot, LATIN SMALL LETTER L WITH DOT BELOW */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Lbelowdot, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_4)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_NonUsPound) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_Quote)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_LeftBracket) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, Key_Equals) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_lbelowdot, RALT(Key_L)) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, Key_Backtick) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_ntilde, Key_Semicolon) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_ordfeminine, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, LSHIFT(Key_3)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace es { +namespace ast { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ast +} // namespace es +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/es/cat/keymap.h b/src/kaleidoscope/host_keymap/linux/es/cat/keymap.h new file mode 100644 index 0000000000..81315aad82 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/es/cat/keymap.h @@ -0,0 +1,571 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: es +// variant: cat + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', Key_Equals) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', LSHIFT(Key_Backtick)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', LSHIFT(Key_3)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', Key_Backtick) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', LSHIFT(Key_Equals)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_NonUsPound)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', LSHIFT(Key_Semicolon)) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_NonUsPound) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', Key_Semicolon) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ŀ', RALT(LSHIFT(Key_L))) \ + OP(L'ŀ', RALT(Key_L)) \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_4)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_NonUsPound) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_Quote)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_LeftBracket) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, Key_Equals) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, Key_Backtick) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_ntilde, Key_Semicolon) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_ordfeminine, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, LSHIFT(Key_3)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace es { +namespace cat { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace cat +} // namespace es +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/es/deadtilde/keymap.h b/src/kaleidoscope/host_keymap/linux/es/deadtilde/keymap.h new file mode 100644 index 0000000000..6f29a9ec06 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/es/deadtilde/keymap.h @@ -0,0 +1,569 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: es +// variant: deadtilde + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_Semicolon)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_Semicolon)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', Key_Equals) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', LSHIFT(Key_Backtick)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', LSHIFT(Key_3)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', Key_Backtick) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', LSHIFT(Key_Equals)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_NonUsPound)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', LSHIFT(Key_Semicolon)) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_NonUsPound) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', Key_Semicolon) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_Semicolon)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_NonUsPound) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_Quote)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_LeftBracket) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_4)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, Key_Equals) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, Key_Backtick) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_ntilde, Key_Semicolon) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_ordfeminine, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, LSHIFT(Key_3)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace es { +namespace deadtilde { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace deadtilde +} // namespace es +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/es/dvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/es/dvorak/keymap.h new file mode 100644 index 0000000000..3db0e7d8bf --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/es/dvorak/keymap.h @@ -0,0 +1,578 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: es +// variant: dvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Z) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Q) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_W)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_W)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_O)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_J)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Backtick)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Z)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_0)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_O) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_J) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Z) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Q) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_W)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_W)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_O)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_J)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Backtick)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Z)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_0)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_O) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_J) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', Key_Equals) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_I)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_P)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_X)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_T)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(Key_5)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_Semicolon))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_I))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', LSHIFT(Key_Backtick)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_NonUsBackslashAndPipe)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'­', RALT(Key_Z)) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'®', RALT(Key_J)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_Z))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', RALT(LSHIFT(Key_Backtick))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_RightBracket))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', LSHIFT(Key_3)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', Key_Backtick) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_W))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_7)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_6))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', LSHIFT(Key_Equals)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Å', RALT(LSHIFT(Key_F))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_NonUsPound)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_H))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', LSHIFT(Key_E)) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(Key_B)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_S))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_K))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Semicolon)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'å', RALT(Key_F)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_NonUsPound) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_H)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', Key_E) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'÷', RALT(LSHIFT(Key_B))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_S)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_K)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Đ', RALT(LSHIFT(Key_U))) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_U)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_O))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_O)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ĸ', RALT(Key_V)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_E))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_E)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_L))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_L)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_G))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_G)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_Y))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_Y)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'€', RALT(Key_D)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_J))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(Key_8)) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_8))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_5))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_H))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_D)) \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_O)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, LSHIFT(Key_E)) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_J)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_K))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_F)) \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_4)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, RALT(Key_Backtick)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_Quote)) \ + OP(XKB_KEY_braceright, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(Key_5)) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_ccedilla, Key_NonUsPound) \ + OP(XKB_KEY_cent, RALT(Key_I)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Q)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_currency, RALT(Key_X)) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_Equals)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_Quote)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_LeftBracket) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Minus)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Minus))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_dstroke, RALT(Key_U)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_eng, RALT(Key_L)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_H)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, Key_Equals) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, RALT(Key_0)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_W)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_h, Key_O) \ + OP(XKB_KEY_hstroke, RALT(Key_O)) \ + OP(XKB_KEY_hyphen, RALT(Key_Z)) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_kra, RALT(Key_V)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_E)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_masculine, Key_Backtick) \ + OP(XKB_KEY_minus, Key_Z) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(Key_B)) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_ntilde, Key_E) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_oe, RALT(Key_G)) \ + OP(XKB_KEY_oneeighth, RALT(Key_8)) \ + OP(XKB_KEY_onehalf, RALT(Key_7)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_oslash, RALT(Key_S)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Q) \ + OP(XKB_KEY_periodcentered, LSHIFT(Key_3)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_J) \ + OP(XKB_KEY_registered, RALT(Key_J)) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_W)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Semicolon)) \ + OP(XKB_KEY_sterling, RALT(Key_P)) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_thorn, RALT(Key_K)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_tslash, RALT(Key_Y)) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Z)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_yen, RALT(Key_T)) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace es { +namespace dvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak +} // namespace es +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/es/mac/keymap.h b/src/kaleidoscope/host_keymap/linux/es/mac/keymap.h new file mode 100644 index 0000000000..4c15a2fb92 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/es/mac/keymap.h @@ -0,0 +1,569 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: es +// variant: mac + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', Key_Equals) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', LSHIFT(Key_Backtick)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', LSHIFT(Key_3)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', Key_Backtick) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', LSHIFT(Key_Equals)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_NonUsPound)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', LSHIFT(Key_Semicolon)) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_NonUsPound) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', Key_Semicolon) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_4)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_NonUsPound) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_Quote)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_LeftBracket) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, Key_Equals) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, Key_Backtick) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_ntilde, Key_Semicolon) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_ordfeminine, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, LSHIFT(Key_3)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace es { +namespace mac { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mac +} // namespace es +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/es/nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/es/nodeadkeys/keymap.h new file mode 100644 index 0000000000..7d65331aca --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/es/nodeadkeys/keymap.h @@ -0,0 +1,578 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: es +// variant: nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_LeftBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_LeftBracket) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_LeftBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_LeftBracket) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', Key_Equals) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', LSHIFT(Key_Quote)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', LSHIFT(Key_Backtick)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_RightBracket))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'´', Key_Quote) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', LSHIFT(Key_3)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', Key_Backtick) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', LSHIFT(Key_Equals)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_NonUsPound)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', LSHIFT(Key_Semicolon)) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_NonUsPound) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', Key_Semicolon) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'˘', RALT(LSHIFT(Key_NonUsPound))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_Slash))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˝', RALT(LSHIFT(Key_Semicolon))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_acute, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_asciitilde, RALT(Key_4)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_NonUsPound) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_diaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, Key_Equals) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_LeftBracket) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_masculine, Key_Backtick) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_ntilde, Key_Semicolon) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_ordfeminine, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, LSHIFT(Key_3)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace es { +namespace nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace nodeadkeys +} // namespace es +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/es/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/es/standard/keymap.h new file mode 100644 index 0000000000..6f73402f1d --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/es/standard/keymap.h @@ -0,0 +1,569 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: es +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', Key_Equals) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', LSHIFT(Key_Backtick)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', LSHIFT(Key_3)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', Key_Backtick) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', LSHIFT(Key_Equals)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_NonUsPound)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', LSHIFT(Key_Semicolon)) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_NonUsPound) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', Key_Semicolon) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_4)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_NonUsPound) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_Quote)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_LeftBracket) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, Key_Equals) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, Key_Backtick) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_ntilde, Key_Semicolon) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_ordfeminine, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, LSHIFT(Key_3)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace es { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace es +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/es/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/es/sun_type6/keymap.h new file mode 100644 index 0000000000..799a16877f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/es/sun_type6/keymap.h @@ -0,0 +1,466 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: es +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Backtick)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_4)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Minus)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_5)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Backtick)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_4)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Minus)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_Quote)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_5)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', Key_Equals) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ª', LSHIFT(Key_Backtick)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'·', LSHIFT(Key_3)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', Key_Backtick) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'¿', LSHIFT(Key_Equals)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ç', LSHIFT(Key_NonUsPound)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ñ', LSHIFT(Key_Semicolon)) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'ç', Key_NonUsPound) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ñ', Key_Semicolon) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_4)) \ + OP(XKB_KEY_asciitilde, RALT(Key_5)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Backtick)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_Quote)) \ + OP(XKB_KEY_braceright, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_NonUsPound) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_Quote)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, Key_LeftBracket) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, Key_Equals) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Minus)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, Key_Backtick) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_ntilde, Key_Semicolon) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ordfeminine, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, LSHIFT(Key_3)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace es { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace es +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/es/sundeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/es/sundeadkeys/keymap.h new file mode 100644 index 0000000000..2c8a0e76b0 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/es/sundeadkeys/keymap.h @@ -0,0 +1,569 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: es +// variant: sundeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', Key_Equals) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', LSHIFT(Key_Backtick)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', LSHIFT(Key_3)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', Key_Backtick) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', LSHIFT(Key_Equals)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_NonUsPound)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', LSHIFT(Key_Semicolon)) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_NonUsPound) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', Key_Semicolon) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_4)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_NonUsPound) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_Quote)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_LeftBracket) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, Key_Equals) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, Key_Backtick) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_ntilde, Key_Semicolon) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_ordfeminine, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, LSHIFT(Key_3)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace es { +namespace sundeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sundeadkeys +} // namespace es +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/es/winkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/es/winkeys/keymap.h new file mode 100644 index 0000000000..a989eb96f9 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/es/winkeys/keymap.h @@ -0,0 +1,567 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: es +// variant: winkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', Key_Equals) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', LSHIFT(Key_Backtick)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', LSHIFT(Key_3)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', Key_Backtick) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', LSHIFT(Key_Equals)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_NonUsPound)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', LSHIFT(Key_Semicolon)) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_NonUsPound) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', Key_Semicolon) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_4)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_NonUsPound) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_Quote)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_LeftBracket) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, Key_Equals) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, Key_Backtick) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_ntilde, Key_Semicolon) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ordfeminine, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, LSHIFT(Key_3)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace es { +namespace winkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace winkeys +} // namespace es +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/et/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/et/standard/keymap.h new file mode 100644 index 0000000000..a87d9b2364 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/et/standard/keymap.h @@ -0,0 +1,280 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: et +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'ሀ', Key_H) \ + OP(L'ለ', Key_L) \ + OP(L'ሐ', LSHIFT(Key_H)) \ + OP(L'መ', Key_M) \ + OP(L'ሠ', LSHIFT(Key_S)) \ + OP(L'ረ', Key_R) \ + OP(L'ሰ', Key_S) \ + OP(L'ሸ', Key_V) \ + OP(L'ቀ', Key_Q) \ + OP(L'ቐ', LSHIFT(Key_Q)) \ + OP(L'በ', Key_B) \ + OP(L'ቨ', LSHIFT(Key_V)) \ + OP(L'ተ', Key_T) \ + OP(L'ቸ', Key_C) \ + OP(L'ኀ', LSHIFT(Key_RightBracket)) \ + OP(L'ነ', Key_N) \ + OP(L'ኘ', LSHIFT(Key_N)) \ + OP(L'አ', Key_X) \ + OP(L'ከ', Key_K) \ + OP(L'ኸ', LSHIFT(Key_K)) \ + OP(L'ወ', Key_W) \ + OP(L'ዐ', LSHIFT(Key_X)) \ + OP(L'ዘ', Key_Z) \ + OP(L'ዠ', LSHIFT(Key_Z)) \ + OP(L'የ', Key_Y) \ + OP(L'ደ', Key_D) \ + OP(L'ዸ', LSHIFT(Key_D)) \ + OP(L'ጀ', Key_J) \ + OP(L'ገ', Key_G) \ + OP(L'ጘ', LSHIFT(Key_G)) \ + OP(L'ጠ', LSHIFT(Key_T)) \ + OP(L'ጨ', Key_RightBracket) \ + OP(L'ጰ', LSHIFT(Key_P)) \ + OP(L'ጸ', LSHIFT(Key_LeftBracket)) \ + OP(L'ፀ', Key_LeftBracket) \ + OP(L'ፈ', Key_F) \ + OP(L'ፐ', Key_P) \ + OP(L'፡', LSHIFT(Key_Semicolon)) \ + OP(L'።', Key_Semicolon) \ + OP(L'፣', Key_Comma) \ + OP(L'፤', Key_Period) \ + OP(L'፥', LSHIFT(Key_Quote)) \ + OP(L'፦', Key_Quote) \ + OP(L'፧', Key_Slash) \ + OP(L'፩', Key_1) \ + OP(L'፪', Key_2) \ + OP(L'፫', Key_3) \ + OP(L'፬', Key_4) \ + OP(L'፭', Key_5) \ + OP(L'፮', Key_6) \ + OP(L'፯', Key_7) \ + OP(L'፰', Key_8) \ + OP(L'፱', Key_9) \ + OP(L'፲', LSHIFT(Key_1)) \ + OP(L'፳', LSHIFT(Key_2)) \ + OP(L'፴', LSHIFT(Key_3)) \ + OP(L'፵', LSHIFT(Key_4)) \ + OP(L'፶', LSHIFT(Key_5)) \ + OP(L'፷', LSHIFT(Key_6)) \ + OP(L'፸', LSHIFT(Key_7)) \ + OP(L'፹', LSHIFT(Key_8)) \ + OP(L'፺', LSHIFT(Key_9)) \ + OP(L'፻', Key_0) \ + OP(L'፼', LSHIFT(Key_0)) \ + OP(L'‐', LSHIFT(Key_NonUsPound)) \ + OP(L'﹧', Key_A) \ + OP(L'﹨', LSHIFT(Key_A)) \ + OP(L'﹩', Key_E) \ + OP(L'ﹰ', LSHIFT(Key_E)) \ + OP(L'ﹱ', Key_I) \ + OP(L'ﹲ', LSHIFT(Key_I)) \ + OP(L'ﹳ', Key_O) \ + OP(L'ﹴ', LSHIFT(Key_O)) \ + OP(L'﹵', Key_U) \ + OP(L'ﹶ', LSHIFT(Key_U)) \ + OP(L'ﹸ', LSHIFT(Key_C)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace et { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace et +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/eu/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/eu/standard/keymap.h new file mode 100644 index 0000000000..35cdb54c01 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/eu/standard/keymap.h @@ -0,0 +1,610 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: eu +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_5))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_4)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_4))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsPound))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_Minus)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_2)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_LeftBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_NonUsPound)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'·', RALT(LSHIFT(Key_Semicolon))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(Key_3)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_Slash)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', RALT(LSHIFT(Key_Z))) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Á', RALT(LSHIFT(Key_X))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(LSHIFT(Key_A))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', RALT(LSHIFT(Key_W))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Q))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', RALT(LSHIFT(Key_F))) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'É', RALT(LSHIFT(Key_G))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ë', RALT(LSHIFT(Key_E))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Ì', RALT(LSHIFT(Key_V))) /* U+00cc, XKB_KEY_Igrave, LATIN CAPITAL LETTER I WITH GRAVE */ \ + OP(L'Í', RALT(LSHIFT(Key_B))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ï', RALT(LSHIFT(Key_I))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ò', RALT(LSHIFT(Key_Comma))) /* U+00d2, XKB_KEY_Ograve, LATIN CAPITAL LETTER O WITH GRAVE */ \ + OP(L'Ó', RALT(LSHIFT(Key_Period))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', RALT(LSHIFT(Key_O))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Equals)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_L))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ù', RALT(LSHIFT(Key_H))) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'Ú', RALT(LSHIFT(Key_J))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', RALT(LSHIFT(Key_U))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Ý', RALT(LSHIFT(Key_R))) /* U+00dd, XKB_KEY_Yacute, LATIN CAPITAL LETTER Y WITH ACUTE */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', RALT(Key_Z)) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'á', RALT(Key_X)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', RALT(Key_W)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_Q)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', RALT(Key_F)) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', RALT(Key_G)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ë', RALT(Key_E)) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'ì', RALT(Key_V)) /* U+00ec, XKB_KEY_igrave, LATIN SMALL LETTER I WITH GRAVE */ \ + OP(L'í', RALT(Key_B)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ï', RALT(Key_I)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ò', RALT(Key_Comma)) /* U+00f2, XKB_KEY_ograve, LATIN SMALL LETTER O WITH GRAVE */ \ + OP(L'ó', RALT(Key_Period)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', RALT(Key_O)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Equals))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_L)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', RALT(Key_H)) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'ú', RALT(Key_J)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', RALT(Key_U)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'ý', RALT(Key_R)) /* U+00fd, XKB_KEY_yacute, LATIN SMALL LETTER Y WITH ACUTE */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ÿ', RALT(Key_Y)) /* U+00ff, XKB_KEY_ydiaeresis, LATIN SMALL LETTER Y WITH DIAERESIS */ \ + OP(L'IJ', RALT(LSHIFT(Key_K))) \ + OP(L'ij', RALT(Key_K)) \ + OP(L'Œ', RALT(LSHIFT(Key_P))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_P)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ÿ', RALT(LSHIFT(Key_Y))) /* U+0178, XKB_KEY_Ydiaeresis, LATIN CAPITAL LETTER Y WITH DIAERESIS */ \ + OP(L'‘', RALT(LSHIFT(Key_9))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_0))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_8))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_9)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_0)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_8)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'†', RALT(LSHIFT(Key_Quote))) /* U+2020, XKB_KEY_dagger, DAGGER */ \ + OP(L'…', RALT(LSHIFT(Key_Slash))) \ + OP(L'‹', RALT(LSHIFT(Key_LeftBracket))) \ + OP(L'›', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'№', RALT(LSHIFT(Key_Minus))) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Agrave, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Egrave, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Igrave, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, RALT(Key_M)) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Ograve, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Ugrave, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Yacute, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Ydiaeresis, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_X)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ae, RALT(Key_Q)) \ + OP(XKB_KEY_agrave, RALT(Key_Z)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_W)) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_Minus)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dagger, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_dead_abovering, RALT(Key_7)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Quote)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_6))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Semicolon)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_Backtick)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_8)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, RALT(Key_G)) \ + OP(XKB_KEY_ediaeresis, RALT(Key_E)) \ + OP(XKB_KEY_egrave, RALT(Key_F)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, RALT(Key_B)) \ + OP(XKB_KEY_idiaeresis, RALT(Key_I)) \ + OP(XKB_KEY_igrave, RALT(Key_V)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_9)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(Key_3)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(Key_Equals)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_numerosign, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, RALT(Key_Period)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_O)) \ + OP(XKB_KEY_oe, RALT(Key_P)) \ + OP(XKB_KEY_ograve, RALT(Key_Comma)) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_2)) \ + OP(XKB_KEY_oslash, RALT(Key_L)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_0)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_4)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, RALT(Key_J)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_U)) \ + OP(XKB_KEY_ugrave, RALT(Key_H)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yacute, RALT(Key_R)) \ + OP(XKB_KEY_ydiaeresis, RALT(Key_Y)) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace eu { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace eu +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fi/classic/keymap.h b/src/kaleidoscope/host_keymap/linux/fi/classic/keymap.h new file mode 100644 index 0000000000..91f46ae048 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fi/classic/keymap.h @@ -0,0 +1,556 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fi +// variant: classic + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_6)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_6))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'¬', RALT(LSHIFT(Key_Period))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'­', RALT(Key_Slash)) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_7))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_P)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_5))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'¼', RALT(Key_Backtick)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', LSHIFT(Key_Backtick)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_Backtick))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Quote))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_X)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_Semicolon))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_B)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_Quote)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_X))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_Semicolon)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ı', RALT(Key_I)) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_LeftBracket))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_LeftBracket)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Š', RALT(LSHIFT(Key_S))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_S)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ž', RALT(LSHIFT(Key_Z))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_Z)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'Ə', RALT(LSHIFT(Key_A))) /* U+018f, XKB_KEY_SCHWA, LATIN CAPITAL LETTER SCHWA */ \ + OP(L'ə', RALT(Key_A)) /* U+0259, XKB_KEY_schwa, LATIN SMALL LETTER SCHWA */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_SCHWA, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_Quote)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_NonUsPound)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_stroke, RALT(Key_L)) /* XKB_KEY_dead_stroke */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hyphen, RALT(Key_Slash)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(Key_X)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Spacebar))) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oe, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_onehalf, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_onequarter, RALT(Key_Backtick)) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_oslash, RALT(Key_Semicolon)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_P)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, RALT(Key_S)) \ + OP(XKB_KEY_schwa, RALT(Key_A)) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_B)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_6)) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fi { +namespace classic { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace classic +} // namespace fi +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fi/das/keymap.h b/src/kaleidoscope/host_keymap/linux/fi/das/keymap.h new file mode 100644 index 0000000000..c757005583 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fi/das/keymap.h @@ -0,0 +1,487 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fi +// variant: das + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_Equals)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Y) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_T) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_T)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_3)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_J)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_P)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_Quote)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_X)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_Semicolon)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_H)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_W)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_K)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_V)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_R)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_S)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_C)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_D)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_L)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_Q)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_LeftBracket)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_E)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_A)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_G)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_U)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_Z)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_O)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_RightBracket)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_J) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_P) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_Quote) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_X) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_Semicolon) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_NonUsBackslashAndPipe) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_H) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_W) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_K) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_V) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_R) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_S) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_C) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_D) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_L) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_Q) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_LeftBracket) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_E) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_A) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_G) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_U) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_Z) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_O) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_RightBracket) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_Y)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_Equals)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Y) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_T) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_T)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_3)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_J)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_P)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_Quote)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_X)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_Semicolon)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_H)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_W)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_K)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_V)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_R)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_S)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_C)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_D)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_L)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_Q)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_LeftBracket)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_E)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_A)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_G)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_U)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_Z)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_O)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_RightBracket)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_J) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_P) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_Quote) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_X) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_Semicolon) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_NonUsBackslashAndPipe) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_H) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_W) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_K) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_V) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_R) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_S) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_C) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_D) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_L) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_Q) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_LeftBracket) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_E) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_A) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_G) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_U) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_Z) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_O) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_RightBracket) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_Y)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_Minus)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_1)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'°', RALT(Key_0)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'µ', RALT(Key_C)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'Ä', LSHIFT(Key_M)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', LSHIFT(Key_B)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_M))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ö', LSHIFT(Key_N)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'ä', Key_M) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', Key_B) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_M)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ö', Key_N) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'Œ', RALT(LSHIFT(Key_N))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_N)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Š', RALT(LSHIFT(Key_A))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_A)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ž', RALT(LSHIFT(Key_RightBracket))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_RightBracket)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'π', RALT(Key_Q)) /* U+03c0, XKB_KEY_Greek_pi, GREEK SMALL LETTER PI */ \ + OP(L'–', RALT(Key_Slash)) \ + OP(L'€', LSHIFT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_J)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_M)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_B)) \ + OP(XKB_KEY_B, LSHIFT(Key_P)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_X)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, LSHIFT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_H)) \ + OP(XKB_KEY_Greek_pi, RALT(Key_Q)) \ + OP(XKB_KEY_H, LSHIFT(Key_W)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_K)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_V)) \ + OP(XKB_KEY_K, LSHIFT(Key_R)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_S)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_C)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_D)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_L)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_N)) \ + OP(XKB_KEY_P, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_R, LSHIFT(Key_E)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_A)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_F)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_I)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_G)) \ + OP(XKB_KEY_W, LSHIFT(Key_U)) \ + OP(XKB_KEY_X, LSHIFT(Key_Z)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_O)) \ + OP(XKB_KEY_Z, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_a, Key_J) \ + OP(XKB_KEY_adiaeresis, Key_M) \ + OP(XKB_KEY_ae, RALT(Key_M)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Y) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_B) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, LSHIFT(Key_3)) \ + OP(XKB_KEY_b, Key_P) \ + OP(XKB_KEY_backslash, Key_Backtick) \ + OP(XKB_KEY_bar, LSHIFT(Key_Y)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_7)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_Quote) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_currency, RALT(Key_Minus)) \ + OP(XKB_KEY_d, Key_X) \ + OP(XKB_KEY_dead_acute, RALT(Key_S)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(Key_R)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_E)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_F)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_D)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_0)) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_Semicolon) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_g, Key_H) \ + OP(XKB_KEY_greater, LSHIFT(Key_T)) \ + OP(XKB_KEY_h, Key_W) \ + OP(XKB_KEY_i, Key_K) \ + OP(XKB_KEY_j, Key_V) \ + OP(XKB_KEY_k, Key_R) \ + OP(XKB_KEY_l, Key_S) \ + OP(XKB_KEY_less, Key_T) \ + OP(XKB_KEY_m, Key_C) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_C)) \ + OP(XKB_KEY_n, Key_D) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Spacebar))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_o, Key_L) \ + OP(XKB_KEY_odiaeresis, Key_N) \ + OP(XKB_KEY_oe, RALT(Key_N)) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_p, Key_Q) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_q, Key_LeftBracket) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_E) \ + OP(XKB_KEY_s, Key_A) \ + OP(XKB_KEY_scaron, RALT(Key_A)) \ + OP(XKB_KEY_section, RALT(Key_1)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_F) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_I) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_G) \ + OP(XKB_KEY_w, Key_U) \ + OP(XKB_KEY_x, Key_Z) \ + OP(XKB_KEY_y, Key_O) \ + OP(XKB_KEY_z, Key_RightBracket) \ + OP(XKB_KEY_zcaron, RALT(Key_RightBracket)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fi { +namespace das { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace das +} // namespace fi +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fi/fidvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/fi/fidvorak/keymap.h new file mode 100644 index 0000000000..0d7c03ea13 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fi/fidvorak/keymap.h @@ -0,0 +1,545 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fi +// variant: fidvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_E)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_W)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_W)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_E)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_W)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_W)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_2)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_T)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', RALT(Key_7)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¬', RALT(Key_P)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'­', RALT(Key_N)) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_B))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¿', RALT(LSHIFT(Key_LeftBracket))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', RALT(LSHIFT(Key_S))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_H))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Z)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_B)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_X))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ü', RALT(LSHIFT(Key_F))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_K))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Semicolon)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_NonUsBackslashAndPipe) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', RALT(Key_S)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_NonUsBackslashAndPipe)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_H)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Z) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ø', RALT(Key_X)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', RALT(Key_F)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_K)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'İ', RALT(LSHIFT(Key_G))) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'ı', RALT(Key_G)) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_V)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_L))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_L)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ə', RALT(LSHIFT(Key_A))) /* U+018f, XKB_KEY_SCHWA, LATIN CAPITAL LETTER SCHWA */ \ + OP(L'Ʒ', RALT(LSHIFT(Key_Slash))) /* U+01b7, XKB_KEY_EZH, LATIN CAPITAL LETTER EZH */ \ + OP(L'ə', RALT(Key_A)) /* U+0259, XKB_KEY_schwa, LATIN SMALL LETTER SCHWA */ \ + OP(L'ʒ', RALT(Key_Slash)) /* U+0292, XKB_KEY_ezh, LATIN SMALL LETTER EZH */ \ + OP(L'ẞ', RALT(LSHIFT(Key_Semicolon))) \ + OP(L'–', RALT(Key_Quote)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Quote))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_W))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_7))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_5))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_2))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_6))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'‰', RALT(Key_5)) /* U+2030, XKB_KEY_permille, PER MILLE SIGN */ \ + OP(L'€', RALT(Key_D)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_H))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_EZH, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_D)) \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_SCHWA, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_K))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_ae, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Q) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_S)) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, Key_Minus) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_cent, RALT(Key_2)) \ + OP(XKB_KEY_colon, LSHIFT(Key_E)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_currency, RALT(Key_4)) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dead_abovering, RALT(Key_0)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Q)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_NonUsPound)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Z)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Q))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_Backtick)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_Z))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_endash, RALT(Key_Quote)) \ + OP(XKB_KEY_eng, RALT(Key_L)) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_eth, RALT(Key_H)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ezh, RALT(Key_Slash)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_E)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_hyphen, RALT(Key_N)) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_idotless, RALT(Key_G)) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_kra, RALT(Key_V)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_less, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(Key_B)) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_notsign, RALT(Key_P)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_odiaeresis, Key_Z) \ + OP(XKB_KEY_oslash, RALT(Key_X)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_permille, RALT(Key_5)) \ + OP(XKB_KEY_plus, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Q)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_schwa, RALT(Key_A)) \ + OP(XKB_KEY_section, RALT(Key_7)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_W)) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Semicolon)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_thorn, RALT(Key_K)) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_udiaeresis, RALT(Key_F)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_yen, RALT(Key_T)) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fi { +namespace fidvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace fidvorak +} // namespace fi +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fi/mac/keymap.h b/src/kaleidoscope/host_keymap/linux/fi/mac/keymap.h new file mode 100644 index 0000000000..9ce39ba4d7 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fi/mac/keymap.h @@ -0,0 +1,576 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fi +// variant: mac + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(LSHIFT(Key_8))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_7)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(LSHIFT(Key_8))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_7)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_3))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', Key_RightBracket) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_1)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'´', Key_Equals) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, Key_Equals) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_7)) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_1)) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_diaeresis, Key_RightBracket) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fi { +namespace mac { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mac +} // namespace fi +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fi/nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/fi/nodeadkeys/keymap.h new file mode 100644 index 0000000000..1a70585694 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fi/nodeadkeys/keymap.h @@ -0,0 +1,568 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fi +// variant: nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_6)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', Key_RightBracket) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_6))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'¬', RALT(LSHIFT(Key_Period))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'­', RALT(Key_Slash)) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_Slash))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_7))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', Key_Equals) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_P)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¸', RALT(Key_Equals)) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_5))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'¼', RALT(Key_Backtick)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', LSHIFT(Key_Backtick)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_Backtick))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Quote))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_X)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_Semicolon))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_B)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_Quote)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_X))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_Semicolon)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ı', RALT(Key_I)) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_LeftBracket))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_LeftBracket)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Š', RALT(LSHIFT(Key_S))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_S)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ž', RALT(LSHIFT(Key_Z))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_Z)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'Ə', RALT(LSHIFT(Key_A))) /* U+018f, XKB_KEY_SCHWA, LATIN CAPITAL LETTER SCHWA */ \ + OP(L'ə', RALT(Key_A)) /* U+0259, XKB_KEY_schwa, LATIN SMALL LETTER SCHWA */ \ + OP(L'ˇ', RALT(Key_NonUsPound)) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_NonUsPound))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˛', RALT(LSHIFT(Key_Equals))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_SCHWA, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, Key_Equals) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_Quote)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_cedilla, RALT(Key_Equals)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_diaeresis, Key_RightBracket) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hyphen, RALT(Key_Slash)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(Key_X)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Spacebar))) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oe, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_onehalf, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_onequarter, RALT(Key_Backtick)) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_oslash, RALT(Key_Semicolon)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_P)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, RALT(Key_S)) \ + OP(XKB_KEY_schwa, RALT(Key_A)) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_B)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_6)) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fi { +namespace nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace nodeadkeys +} // namespace fi +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fi/smi/keymap.h b/src/kaleidoscope/host_keymap/linux/fi/smi/keymap.h new file mode 100644 index 0000000000..0f889b0eb4 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fi/smi/keymap.h @@ -0,0 +1,606 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fi +// variant: smi + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(LSHIFT(Key_3))) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(LSHIFT(Key_4))) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Equals) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_RightBracket))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Equals))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(LSHIFT(Key_3))) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(LSHIFT(Key_4))) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Equals) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_RightBracket))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Equals))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(Key_Backtick)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_6)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_1)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_F)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(LSHIFT(Key_V))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_J)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'­', RALT(LSHIFT(Key_L))) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_L)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'´', RALT(Key_Equals)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¶', RALT(LSHIFT(Key_6))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_Period))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'»', RALT(LSHIFT(Key_B))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', RALT(LSHIFT(Key_A))) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Á', LSHIFT(Key_Q)) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Â', RALT(LSHIFT(Key_LeftBracket))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Quote))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'É', RALT(LSHIFT(Key_E))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ï', RALT(LSHIFT(Key_I))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_J))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_Semicolon))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ü', RALT(LSHIFT(Key_U))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Ý', RALT(LSHIFT(Key_Y))) /* U+00dd, XKB_KEY_Yacute, LATIN CAPITAL LETTER Y WITH ACUTE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', RALT(Key_A)) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'á', Key_Q) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'â', RALT(Key_LeftBracket)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_Quote)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', RALT(Key_E)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ï', RALT(Key_I)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_Minus)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_Semicolon)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', RALT(Key_U)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'ý', RALT(Key_Y)) /* U+00fd, XKB_KEY_yacute, LATIN SMALL LETTER Y WITH ACUTE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Č', LSHIFT(Key_X)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_X) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_NonUsPound)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_NonUsPound) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ŋ', LSHIFT(Key_RightBracket)) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', Key_RightBracket) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Š', LSHIFT(Key_W)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_W) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ž', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_NonUsBackslashAndPipe) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'Ʒ', RALT(LSHIFT(Key_Z))) /* U+01b7, XKB_KEY_EZH, LATIN CAPITAL LETTER EZH */ \ + OP(L'Ǥ', RALT(LSHIFT(Key_H))) \ + OP(L'ǥ', RALT(Key_H)) \ + OP(L'Ǧ', RALT(LSHIFT(Key_G))) /* U+01e6, XKB_KEY_Gcaron, LATIN CAPITAL LETTER G WITH CARON */ \ + OP(L'ǧ', RALT(Key_G)) /* U+01e7, XKB_KEY_gcaron, LATIN SMALL LETTER G WITH CARON */ \ + OP(L'Ǩ', RALT(LSHIFT(Key_K))) \ + OP(L'ǩ', RALT(Key_K)) \ + OP(L'Ǯ', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(L'ǯ', RALT(Key_NonUsBackslashAndPipe)) \ + OP(L'ʒ', RALT(Key_Z)) /* U+0292, XKB_KEY_ezh, LATIN SMALL LETTER EZH */ \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_N)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_M)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(Key_Comma)) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_N))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_M))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_Comma))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'•', RALT(Key_5)) \ + OP(L'…', RALT(Key_Period)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'™', RALT(LSHIFT(Key_R))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'≠', RALT(LSHIFT(Key_0))) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'≤', RALT(Key_V)) /* U+2264, XKB_KEY_lessthanequal, LESS-THAN OR EQUAL TO */ \ + OP(L'≥', RALT(Key_B)) /* U+2265, XKB_KEY_greaterthanequal, GREATER-THAN OR EQUAL TO */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Aacute, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Agrave, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_X)) \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_EZH, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gcaron, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_W)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_X, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Yacute, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_Q) \ + OP(XKB_KEY_acircumflex, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_acute, RALT(Key_Equals)) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_Quote)) \ + OP(XKB_KEY_agrave, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, RALT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_asterisk, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_Equals) \ + OP(XKB_KEY_bar, Key_Backtick) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(Key_Backtick)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, Key_X) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_1)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_degree, RALT(Key_L)) \ + OP(XKB_KEY_division, RALT(Key_Minus)) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_dstroke, Key_NonUsPound) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, RALT(Key_E)) \ + OP(XKB_KEY_ellipsis, RALT(Key_Period)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, Key_RightBracket) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ezh, RALT(Key_Z)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gcaron, RALT(Key_G)) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_greaterthanequal, RALT(Key_B)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hyphen, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idiaeresis, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_N)) \ + OP(XKB_KEY_less, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_lessthanequal, RALT(Key_V)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notequal, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_notsign, RALT(Key_J)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_ordfeminine, RALT(Key_F)) \ + OP(XKB_KEY_oslash, RALT(Key_Semicolon)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_M)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_W) \ + OP(XKB_KEY_section, RALT(Key_6)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_singlelowquotemark, RALT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, RALT(Key_W)) \ + OP(XKB_KEY_x, RALT(Key_X)) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yacute, RALT(Key_Y)) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, Key_NonUsBackslashAndPipe) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fi { +namespace smi { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace smi +} // namespace fi +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fi/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/fi/standard/keymap.h new file mode 100644 index 0000000000..d0438284ed --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fi/standard/keymap.h @@ -0,0 +1,545 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fi +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'«', RALT(LSHIFT(Key_4))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_X))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'»', RALT(LSHIFT(Key_3))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', LSHIFT(Key_Backtick)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Quote))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_X)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_Semicolon))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_Quote)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ø', RALT(Key_Semicolon)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ı', RALT(Key_I)) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_N))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_N)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ə', RALT(LSHIFT(Key_A))) /* U+018f, XKB_KEY_SCHWA, LATIN CAPITAL LETTER SCHWA */ \ + OP(L'Ʒ', RALT(LSHIFT(Key_Z))) /* U+01b7, XKB_KEY_EZH, LATIN CAPITAL LETTER EZH */ \ + OP(L'ə', RALT(Key_A)) /* U+0259, XKB_KEY_schwa, LATIN SMALL LETTER SCHWA */ \ + OP(L'ʒ', RALT(Key_Z)) /* U+0292, XKB_KEY_ezh, LATIN SMALL LETTER EZH */ \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_M))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_Comma))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_Comma)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(Key_6)) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_5))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_2))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_6))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'‰', RALT(Key_5)) /* U+2030, XKB_KEY_permille, PER MILLE SIGN */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_EZH, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_SCHWA, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_Quote)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowcomma, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_belowcomma */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Period)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_NonUsPound)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_LeftBracket)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_P))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(Key_P)) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_stroke, RALT(Key_L)) /* XKB_KEY_dead_stroke */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, RALT(Key_N)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ezh, RALT(Key_Z)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(Key_X)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_onehalf, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_oslash, RALT(Key_Semicolon)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_permille, RALT(Key_5)) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_Comma)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_schwa, RALT(Key_A)) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_singlelowquotemark, RALT(Key_6)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fi { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace fi +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fi/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/fi/sun_type6/keymap.h new file mode 100644 index 0000000000..48fc237094 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fi/sun_type6/keymap.h @@ -0,0 +1,465 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fi +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'½', LSHIFT(Key_Backtick)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_NonUsPound)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_onehalf, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fi { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace fi +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fi/winkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/fi/winkeys/keymap.h new file mode 100644 index 0000000000..2e1678bb42 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fi/winkeys/keymap.h @@ -0,0 +1,543 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fi +// variant: winkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'«', RALT(LSHIFT(Key_4))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_X))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'»', RALT(LSHIFT(Key_3))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', LSHIFT(Key_Backtick)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Quote))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_X)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_Semicolon))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_Quote)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ø', RALT(Key_Semicolon)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ı', RALT(Key_I)) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_N))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_N)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ə', RALT(LSHIFT(Key_A))) /* U+018f, XKB_KEY_SCHWA, LATIN CAPITAL LETTER SCHWA */ \ + OP(L'Ʒ', RALT(LSHIFT(Key_Z))) /* U+01b7, XKB_KEY_EZH, LATIN CAPITAL LETTER EZH */ \ + OP(L'ə', RALT(Key_A)) /* U+0259, XKB_KEY_schwa, LATIN SMALL LETTER SCHWA */ \ + OP(L'ʒ', RALT(Key_Z)) /* U+0292, XKB_KEY_ezh, LATIN SMALL LETTER EZH */ \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_M))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_Comma))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_Comma)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(Key_6)) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_5))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_2))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_6))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_EZH, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_SCHWA, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_Quote)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowcomma, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_belowcomma */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Period)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_NonUsPound)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_LeftBracket)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_P))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(Key_P)) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_stroke, RALT(Key_L)) /* XKB_KEY_dead_stroke */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, RALT(Key_N)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ezh, RALT(Key_Z)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(Key_X)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_onehalf, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_oslash, RALT(Key_Semicolon)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_Comma)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_schwa, RALT(Key_A)) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_singlelowquotemark, RALT(Key_6)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fi { +namespace winkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace winkeys +} // namespace fi +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fo/nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/fo/nodeadkeys/keymap.h new file mode 100644 index 0000000000..9407a52a3d --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fo/nodeadkeys/keymap.h @@ -0,0 +1,580 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fo +// variant: nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_5))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_6)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', Key_RightBracket) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_A)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'­', RALT(Key_Slash)) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_RightBracket))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_Minus)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', Key_Equals) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_Backtick))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¸', RALT(Key_Comma)) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_A))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', Key_Backtick) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_Backtick)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', LSHIFT(Key_Semicolon)) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_NonUsPound))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', LSHIFT(Key_Quote)) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', Key_Semicolon) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_7))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', Key_Quote) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'ˇ', RALT(LSHIFT(Key_Quote))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˙', RALT(LSHIFT(Key_Period))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_Equals))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(Key_NonUsPound)) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Oslash, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_acute, Key_Equals) \ + OP(XKB_KEY_ae, Key_Semicolon) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bar, RALT(Key_Equals)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_cedilla, RALT(Key_Comma)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_diaeresis, Key_RightBracket) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_hyphen, RALT(Key_Slash)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_onehalf, Key_Backtick) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_A)) \ + OP(XKB_KEY_oslash, Key_Quote) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(Key_Minus)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threequarters, RALT(Key_Backtick)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_6)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fo { +namespace nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace nodeadkeys +} // namespace fo +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fo/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/fo/standard/keymap.h new file mode 100644 index 0000000000..b5681c28d7 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fo/standard/keymap.h @@ -0,0 +1,569 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fo +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsBackslashAndPipe)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_5))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_6)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_Equals))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_A)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'­', RALT(Key_Slash)) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_Slash))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_Minus)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_Backtick))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_A))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', Key_Backtick) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_Backtick)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', LSHIFT(Key_Semicolon)) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', LSHIFT(Key_RightBracket)) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_NonUsPound))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', LSHIFT(Key_Quote)) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', Key_Semicolon) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', Key_RightBracket) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_7))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', Key_Quote) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, LSHIFT(Key_RightBracket)) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Oslash, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, Key_Semicolon) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bar, RALT(Key_Equals)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Comma)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_NonUsPound)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Comma))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, Key_RightBracket) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_hyphen, RALT(Key_Slash)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_onehalf, Key_Backtick) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_A)) \ + OP(XKB_KEY_oslash, Key_Quote) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(Key_Minus)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threequarters, RALT(Key_Backtick)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_6)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fo { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace fo +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fr/azerty/keymap.h b/src/kaleidoscope/host_keymap/linux/fr/azerty/keymap.h new file mode 100644 index 0000000000..2a63877e1c --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fr/azerty/keymap.h @@ -0,0 +1,466 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fr +// variant: azerty + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_RightBracket)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'µ', LSHIFT(Key_NonUsPound)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_currency, RALT(Key_RightBracket)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, Key_8) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fr { +namespace azerty { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace azerty +} // namespace fr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fr/bepo/keymap.h b/src/kaleidoscope/host_keymap/linux/fr/bepo/keymap.h new file mode 100644 index 0000000000..36ba073dc0 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fr/bepo/keymap.h @@ -0,0 +1,608 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fr +// variant: bepo + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_Y)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_1) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_Backtick)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_Backtick) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', Key_Equals) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_E)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_N) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_4) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_5) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_0) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_7) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_G) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_8) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_V) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_9) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_V)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_G)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_2)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Minus) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_3)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_N)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_6) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_Q)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_H)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_I)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_F)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Slash)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_Comma)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_Period)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_D)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_P)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_B)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_O)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Quote)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_Semicolon)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_R)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_E)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_M)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_L)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_K)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_J)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_S)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_U)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_RightBracket)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_C)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_X)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_LeftBracket)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_4)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Z)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_5)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', RALT(Key_Spacebar)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_Q) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_H) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_I) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_F) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Slash) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_Comma) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_Period) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_D) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_P) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_B) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_O) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Quote) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_Semicolon) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_R) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_E) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_M) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_L) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_K) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_J) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_S) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_U) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_RightBracket) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_C) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_X) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_LeftBracket) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_X)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Q)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_B)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_Y)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_1) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_Backtick)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_Backtick) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', Key_Equals) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_E)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_N) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_4) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_5) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_0) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_7) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_G) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_8) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_V) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_9) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_V)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_G)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_2)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Minus) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_3)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_N)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_6) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_Q)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_H)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_I)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_F)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Slash)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_Comma)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_Period)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_D)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_P)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_B)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_O)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Quote)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_Semicolon)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_R)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_E)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_M)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_L)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_K)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_J)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_S)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_U)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_RightBracket)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_C)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_X)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_LeftBracket)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_4)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Z)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_5)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', RALT(Key_Spacebar)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_Q) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_H) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_I) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_F) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Slash) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_Comma) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_Period) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_D) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_P) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_B) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_O) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Quote) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_Semicolon) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_R) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_E) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_M) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_L) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_K) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_J) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_S) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_U) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_RightBracket) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_C) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_X) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_LeftBracket) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_X)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Q)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_B)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', LSHIFT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_Y)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¦', RALT(LSHIFT(Key_Q))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_E))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_H)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_Slash))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', Key_2) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_7))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_L)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_7)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_Backtick))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_V))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_Quote))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', Key_3) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_8))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(LSHIFT(Key_9))) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_0))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(Key_N)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', LSHIFT(Key_Z)) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_NonUsPound)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', LSHIFT(Key_T)) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'É', LSHIFT(Key_W)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ê', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Ð', RALT(LSHIFT(Key_I))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(Key_0)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ù', RALT(LSHIFT(Key_S))) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'Þ', RALT(LSHIFT(Key_J))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_K)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_Z) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_NonUsPound) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_T) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_W) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ê', Key_NonUsBackslashAndPipe) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'ð', RALT(Key_I)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(Key_9)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ù', RALT(Key_S)) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'þ', RALT(Key_J)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'IJ', RALT(LSHIFT(Key_P))) \ + OP(L'ij', RALT(Key_P)) \ + OP(L'Œ', RALT(LSHIFT(Key_R))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_R)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'ſ', RALT(LSHIFT(Key_H))) \ + OP(L'Ə', RALT(LSHIFT(Key_LeftBracket))) /* U+018f, XKB_KEY_SCHWA, LATIN CAPITAL LETTER SCHWA */ \ + OP(L'ə', RALT(Key_LeftBracket)) /* U+0259, XKB_KEY_schwa, LATIN SMALL LETTER SCHWA */ \ + OP(L'ẞ', RALT(LSHIFT(Key_K))) \ + OP(L'–', RALT(Key_Backtick)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_1)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_X))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_G)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_2))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_3))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_1))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'†', RALT(Key_Period)) /* U+2020, XKB_KEY_dagger, DAGGER */ \ + OP(L'‡', RALT(LSHIFT(Key_Period))) /* U+2021, XKB_KEY_doubledagger, DOUBLE DAGGER */ \ + OP(L'…', RALT(Key_V)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) \ + OP(L'‰', RALT(Key_Equals)) \ + OP(L'′', RALT(LSHIFT(Key_Minus))) /* U+2032, XKB_KEY_minutes, PRIME */ \ + OP(L'″', RALT(LSHIFT(Key_Equals))) /* U+2033, XKB_KEY_seconds, DOUBLE PRIME */ \ + OP(L'€', RALT(Key_F)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_L))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'←', RALT(Key_Keypad4)) \ + OP(L'↑', RALT(Key_Keypad8)) \ + OP(L'→', RALT(Key_Keypad6)) \ + OP(L'↓', RALT(Key_Keypad2)) \ + OP(L'↔', RALT(Key_Keypad5)) \ + OP(L'↕', RALT(Key_Keypad0)) \ + OP(L'↖', RALT(Key_Keypad7)) \ + OP(L'↗', RALT(Key_Keypad9)) \ + OP(L'↘', RALT(Key_Keypad3)) \ + OP(L'↙', RALT(Key_Keypad1)) \ + OP(L'⇐', RALT(LSHIFT(Key_Keypad4))) \ + OP(L'⇑', RALT(LSHIFT(Key_Keypad8))) \ + OP(L'⇒', RALT(LSHIFT(Key_Keypad6))) \ + OP(L'⇓', RALT(LSHIFT(Key_Keypad2))) \ + OP(L'⇔', RALT(LSHIFT(Key_Keypad5))) \ + OP(L'⇕', RALT(LSHIFT(Key_Keypad0))) \ + OP(L'⇖', RALT(LSHIFT(Key_Keypad7))) \ + OP(L'⇗', RALT(LSHIFT(Key_Keypad9))) \ + OP(L'⇘', RALT(LSHIFT(Key_Keypad3))) \ + OP(L'⇙', RALT(LSHIFT(Key_Keypad1))) \ + OP(L'−', RALT(Key_8)) \ + OP(L'∕', LSHIFT(Key_KeypadDivide)) \ + OP(L'≠', RALT(Key_Minus)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'≤', RALT(LSHIFT(Key_4))) /* U+2264, XKB_KEY_lessthanequal, LESS-THAN OR EQUAL TO */ \ + OP(L'≥', RALT(LSHIFT(Key_5))) /* U+2265, XKB_KEY_greaterthanequal, GREATER-THAN OR EQUAL TO */ \ + OP(L'⋅', LSHIFT(Key_KeypadMultiply)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Agrave, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_Q)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_H)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_I)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_F)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_I))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, LSHIFT(Key_W)) \ + OP(XKB_KEY_Ecircumflex, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_Egrave, LSHIFT(Key_T)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_F)) \ + OP(XKB_KEY_F, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_H, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_D)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_P)) \ + OP(XKB_KEY_K, LSHIFT(Key_B)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_O)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_R)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_P, LSHIFT(Key_E)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_M)) \ + OP(XKB_KEY_R, LSHIFT(Key_L)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_K)) \ + OP(XKB_KEY_SCHWA, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_J)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_J))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_S)) \ + OP(XKB_KEY_Ugrave, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_U)) \ + OP(XKB_KEY_W, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_X, LSHIFT(Key_C)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_X)) \ + OP(XKB_KEY_Z, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_agrave, Key_Z) \ + OP(XKB_KEY_ampersand, RALT(Key_E)) \ + OP(XKB_KEY_apostrophe, Key_N) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(Key_B)) \ + OP(XKB_KEY_asterisk, Key_0) \ + OP(XKB_KEY_at, Key_6) \ + OP(XKB_KEY_b, Key_Q) \ + OP(XKB_KEY_backslash, RALT(Key_Z)) \ + OP(XKB_KEY_bar, RALT(Key_Q)) \ + OP(XKB_KEY_braceleft, RALT(Key_X)) \ + OP(XKB_KEY_braceright, RALT(Key_C)) \ + OP(XKB_KEY_bracketleft, RALT(Key_4)) \ + OP(XKB_KEY_bracketright, RALT(Key_5)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_c, Key_H) \ + OP(XKB_KEY_ccedilla, Key_NonUsPound) \ + OP(XKB_KEY_colon, LSHIFT(Key_V)) \ + OP(XKB_KEY_comma, Key_G) \ + OP(XKB_KEY_copyright, RALT(Key_H)) \ + OP(XKB_KEY_d, Key_I) \ + OP(XKB_KEY_dagger, RALT(Key_Period)) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_D))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_M)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_W)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowcomma, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_belowcomma */ \ + OP(XKB_KEY_dead_belowdot, RALT(LSHIFT(Key_M))) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(Key_RightBracket)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_U)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_NonUsPound)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_Y) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_currency, RALT(LSHIFT(Key_F))) /* XKB_KEY_dead_currency */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_D)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_W))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_T)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_greek, RALT(Key_Comma)) /* XKB_KEY_dead_greek */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_N))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_G))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Quote)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_Slash)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_stroke, RALT(Key_O)) /* XKB_KEY_dead_stroke */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Semicolon)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(Key_9)) \ + OP(XKB_KEY_dollar, Key_Backtick) \ + OP(XKB_KEY_doubledagger, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_e, Key_F) \ + OP(XKB_KEY_eacute, Key_W) \ + OP(XKB_KEY_ecircumflex, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_egrave, Key_T) \ + OP(XKB_KEY_ellipsis, RALT(Key_V)) \ + OP(XKB_KEY_emdash, RALT(Key_1)) \ + OP(XKB_KEY_endash, RALT(Key_Backtick)) \ + OP(XKB_KEY_equal, Key_Minus) \ + OP(XKB_KEY_eth, RALT(Key_I)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_Y)) \ + OP(XKB_KEY_exclamdown, RALT(Key_Y)) \ + OP(XKB_KEY_f, Key_Slash) \ + OP(XKB_KEY_g, Key_Comma) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_3)) \ + OP(XKB_KEY_greaterthanequal, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_guillemotleft, Key_2) \ + OP(XKB_KEY_guillemotright, Key_3) \ + OP(XKB_KEY_h, Key_Period) \ + OP(XKB_KEY_i, Key_D) \ + OP(XKB_KEY_j, Key_P) \ + OP(XKB_KEY_k, Key_B) \ + OP(XKB_KEY_l, Key_O) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_less, RALT(Key_2)) \ + OP(XKB_KEY_lessthanequal, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_m, Key_Quote) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_minus, Key_8) \ + OP(XKB_KEY_minutes, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_multiply, RALT(Key_0)) \ + OP(XKB_KEY_n, Key_Semicolon) \ + OP(XKB_KEY_nobreakspace, LSHIFT(Key_Spacebar)) \ + OP(XKB_KEY_notequal, RALT(Key_Minus)) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_o, Key_R) \ + OP(XKB_KEY_oe, RALT(Key_R)) \ + OP(XKB_KEY_onehalf, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_p, Key_E) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_parenleft, Key_4) \ + OP(XKB_KEY_parenright, Key_5) \ + OP(XKB_KEY_percent, Key_Equals) \ + OP(XKB_KEY_period, Key_V) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_plus, Key_7) \ + OP(XKB_KEY_plusminus, RALT(Key_7)) \ + OP(XKB_KEY_q, Key_M) \ + OP(XKB_KEY_question, LSHIFT(Key_N)) \ + OP(XKB_KEY_questiondown, RALT(Key_N)) \ + OP(XKB_KEY_quotedbl, Key_1) \ + OP(XKB_KEY_r, Key_L) \ + OP(XKB_KEY_registered, RALT(Key_L)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_G)) \ + OP(XKB_KEY_s, Key_K) \ + OP(XKB_KEY_schwa, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_seconds, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_G)) \ + OP(XKB_KEY_slash, Key_9) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_K)) \ + OP(XKB_KEY_t, Key_J) \ + OP(XKB_KEY_thorn, RALT(Key_J)) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_u, Key_S) \ + OP(XKB_KEY_ugrave, RALT(Key_S)) \ + OP(XKB_KEY_underscore, RALT(Key_Spacebar)) \ + OP(XKB_KEY_v, Key_U) \ + OP(XKB_KEY_w, Key_RightBracket) \ + OP(XKB_KEY_x, Key_C) \ + OP(XKB_KEY_y, Key_X) \ + OP(XKB_KEY_z, Key_LeftBracket) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fr { +namespace bepo { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace bepo +} // namespace fr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fr/bepo_latin9/keymap.h b/src/kaleidoscope/host_keymap/linux/fr/bepo_latin9/keymap.h new file mode 100644 index 0000000000..4ff19119b4 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fr/bepo_latin9/keymap.h @@ -0,0 +1,582 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fr +// variant: bepo_latin9 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_Y)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_1) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_Backtick)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_Backtick) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', Key_Equals) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_E)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_N) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_4) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_5) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_0) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_7) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_G) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_8) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_V) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_9) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_V)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_G)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_2)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Minus) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_3)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_N)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_6) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_Q)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_H)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_I)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_F)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Slash)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_Comma)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_Period)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_D)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_P)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_B)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_O)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Quote)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_Semicolon)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_R)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_E)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_M)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_L)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_K)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_J)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_S)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_U)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_RightBracket)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_C)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_X)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_LeftBracket)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_4)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Z)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_5)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', RALT(Key_Spacebar)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_Q) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_H) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_I) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_F) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Slash) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_Comma) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_Period) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_D) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_P) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_B) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_O) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Quote) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_Semicolon) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_R) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_E) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_M) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_L) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_K) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_J) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_S) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_U) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_RightBracket) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_C) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_X) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_LeftBracket) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_X)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Q)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_B)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_Y)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_1) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_Backtick)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_Backtick) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', Key_Equals) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_E)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_N) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_4) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_5) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_0) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_7) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_G) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_8) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_V) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_9) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_V)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_G)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_2)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Minus) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_3)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_N)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_6) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_Q)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_H)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_I)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_F)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Slash)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_Comma)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_Period)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_D)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_P)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_B)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_O)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Quote)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_Semicolon)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_R)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_E)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_M)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_L)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_K)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_J)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_S)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_U)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_RightBracket)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_C)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_X)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_LeftBracket)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_4)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Z)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_5)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', RALT(Key_Spacebar)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_Q) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_H) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_I) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_F) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Slash) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_Comma) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_Period) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_D) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_P) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_B) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_O) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Quote) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_Semicolon) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_R) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_E) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_M) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_L) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_K) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_J) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_S) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_U) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_RightBracket) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_C) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_X) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_LeftBracket) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_X)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Q)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_B)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', LSHIFT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_Y)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¦', RALT(LSHIFT(Key_Q))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_E))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_H)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_Slash))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', Key_2) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_7))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_L)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(Key_Quote)) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_7)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_Backtick))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_KeypadMultiply)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_Quote))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', Key_3) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_8))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(LSHIFT(Key_9))) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_0))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(Key_N)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', LSHIFT(Key_Z)) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_NonUsPound)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', LSHIFT(Key_T)) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'É', LSHIFT(Key_W)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ê', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Ð', RALT(LSHIFT(Key_I))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(Key_0)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ù', RALT(LSHIFT(Key_S))) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'Þ', RALT(LSHIFT(Key_J))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_K)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_Z) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_NonUsPound) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_T) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_W) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ê', Key_NonUsBackslashAndPipe) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'ð', RALT(Key_I)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(Key_9)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ù', RALT(Key_S)) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'þ', RALT(Key_J)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'IJ', RALT(LSHIFT(Key_P))) \ + OP(L'ij', RALT(Key_P)) \ + OP(L'Œ', RALT(LSHIFT(Key_R))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_R)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'ſ', RALT(LSHIFT(Key_H))) \ + OP(L'Ə', RALT(LSHIFT(Key_LeftBracket))) /* U+018f, XKB_KEY_SCHWA, LATIN CAPITAL LETTER SCHWA */ \ + OP(L'ə', RALT(Key_LeftBracket)) /* U+0259, XKB_KEY_schwa, LATIN SMALL LETTER SCHWA */ \ + OP(L'ẞ', RALT(LSHIFT(Key_K))) \ + OP(L'—', RALT(Key_1)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_X))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_C))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_2))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_3))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_1))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'†', RALT(Key_Period)) /* U+2020, XKB_KEY_dagger, DAGGER */ \ + OP(L'‡', RALT(LSHIFT(Key_Period))) /* U+2021, XKB_KEY_doubledagger, DOUBLE DAGGER */ \ + OP(L'…', RALT(Key_V)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‰', RALT(Key_Equals)) \ + OP(L'′', RALT(LSHIFT(Key_Minus))) /* U+2032, XKB_KEY_minutes, PRIME */ \ + OP(L'″', RALT(LSHIFT(Key_Equals))) /* U+2033, XKB_KEY_seconds, DOUBLE PRIME */ \ + OP(L'€', RALT(Key_F)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_L))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'≠', RALT(Key_Minus)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'≤', RALT(LSHIFT(Key_4))) /* U+2264, XKB_KEY_lessthanequal, LESS-THAN OR EQUAL TO */ \ + OP(L'≥', RALT(LSHIFT(Key_5))) /* U+2265, XKB_KEY_greaterthanequal, GREATER-THAN OR EQUAL TO */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Agrave, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_Q)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_H)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_I)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_F)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_I))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, LSHIFT(Key_W)) \ + OP(XKB_KEY_Ecircumflex, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_Egrave, LSHIFT(Key_T)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_F)) \ + OP(XKB_KEY_F, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_H, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_D)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_P)) \ + OP(XKB_KEY_K, LSHIFT(Key_B)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_O)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_R)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_P, LSHIFT(Key_E)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_M)) \ + OP(XKB_KEY_R, LSHIFT(Key_L)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_K)) \ + OP(XKB_KEY_SCHWA, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_J)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_J))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_S)) \ + OP(XKB_KEY_Ugrave, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_U)) \ + OP(XKB_KEY_W, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_X, LSHIFT(Key_C)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_X)) \ + OP(XKB_KEY_Z, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_agrave, Key_Z) \ + OP(XKB_KEY_ampersand, RALT(Key_E)) \ + OP(XKB_KEY_apostrophe, Key_N) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(Key_B)) \ + OP(XKB_KEY_asterisk, Key_0) \ + OP(XKB_KEY_at, Key_6) \ + OP(XKB_KEY_b, Key_Q) \ + OP(XKB_KEY_backslash, RALT(Key_Z)) \ + OP(XKB_KEY_bar, RALT(Key_Q)) \ + OP(XKB_KEY_braceleft, RALT(Key_X)) \ + OP(XKB_KEY_braceright, RALT(Key_C)) \ + OP(XKB_KEY_bracketleft, RALT(Key_4)) \ + OP(XKB_KEY_bracketright, RALT(Key_5)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_c, Key_H) \ + OP(XKB_KEY_ccedilla, Key_NonUsPound) \ + OP(XKB_KEY_colon, LSHIFT(Key_V)) \ + OP(XKB_KEY_comma, Key_G) \ + OP(XKB_KEY_copyright, RALT(Key_H)) \ + OP(XKB_KEY_d, Key_I) \ + OP(XKB_KEY_dagger, RALT(Key_Period)) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_D))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_M)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_W)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowcomma, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_belowcomma */ \ + OP(XKB_KEY_dead_belowdot, RALT(LSHIFT(Key_M))) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(Key_RightBracket)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_U)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_NonUsPound)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_Y) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_currency, RALT(LSHIFT(Key_F))) /* XKB_KEY_dead_currency */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_D)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_W))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_T)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_greek, RALT(Key_Comma)) /* XKB_KEY_dead_greek */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_N))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_G))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_stroke, RALT(Key_O)) /* XKB_KEY_dead_stroke */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Semicolon)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(Key_9)) \ + OP(XKB_KEY_dollar, Key_Backtick) \ + OP(XKB_KEY_doubledagger, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_e, Key_F) \ + OP(XKB_KEY_eacute, Key_W) \ + OP(XKB_KEY_ecircumflex, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_egrave, Key_T) \ + OP(XKB_KEY_ellipsis, RALT(Key_V)) \ + OP(XKB_KEY_emdash, RALT(Key_1)) \ + OP(XKB_KEY_equal, Key_Minus) \ + OP(XKB_KEY_eth, RALT(Key_I)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_Y)) \ + OP(XKB_KEY_exclamdown, RALT(Key_Y)) \ + OP(XKB_KEY_f, Key_Slash) \ + OP(XKB_KEY_g, Key_Comma) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_3)) \ + OP(XKB_KEY_greaterthanequal, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_guillemotleft, Key_2) \ + OP(XKB_KEY_guillemotright, Key_3) \ + OP(XKB_KEY_h, Key_Period) \ + OP(XKB_KEY_i, Key_D) \ + OP(XKB_KEY_j, Key_P) \ + OP(XKB_KEY_k, Key_B) \ + OP(XKB_KEY_l, Key_O) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_less, RALT(Key_2)) \ + OP(XKB_KEY_lessthanequal, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_m, Key_Quote) \ + OP(XKB_KEY_macron, RALT(Key_Quote)) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_minus, Key_8) \ + OP(XKB_KEY_minutes, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_multiply, RALT(Key_0)) \ + OP(XKB_KEY_n, Key_Semicolon) \ + OP(XKB_KEY_nobreakspace, LSHIFT(Key_Spacebar)) \ + OP(XKB_KEY_notequal, RALT(Key_Minus)) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_o, Key_R) \ + OP(XKB_KEY_oe, RALT(Key_R)) \ + OP(XKB_KEY_onehalf, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_p, Key_E) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_parenleft, Key_4) \ + OP(XKB_KEY_parenright, Key_5) \ + OP(XKB_KEY_percent, Key_Equals) \ + OP(XKB_KEY_period, Key_V) \ + OP(XKB_KEY_periodcentered, RALT(Key_KeypadMultiply)) \ + OP(XKB_KEY_plus, Key_7) \ + OP(XKB_KEY_plusminus, RALT(Key_7)) \ + OP(XKB_KEY_q, Key_M) \ + OP(XKB_KEY_question, LSHIFT(Key_N)) \ + OP(XKB_KEY_questiondown, RALT(Key_N)) \ + OP(XKB_KEY_quotedbl, Key_1) \ + OP(XKB_KEY_r, Key_L) \ + OP(XKB_KEY_registered, RALT(Key_L)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_s, Key_K) \ + OP(XKB_KEY_schwa, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_seconds, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_G)) \ + OP(XKB_KEY_slash, Key_9) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_K)) \ + OP(XKB_KEY_t, Key_J) \ + OP(XKB_KEY_thorn, RALT(Key_J)) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_u, Key_S) \ + OP(XKB_KEY_ugrave, RALT(Key_S)) \ + OP(XKB_KEY_underscore, RALT(Key_Spacebar)) \ + OP(XKB_KEY_v, Key_U) \ + OP(XKB_KEY_w, Key_RightBracket) \ + OP(XKB_KEY_x, Key_C) \ + OP(XKB_KEY_y, Key_X) \ + OP(XKB_KEY_z, Key_LeftBracket) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fr { +namespace bepo_latin9 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace bepo_latin9 +} // namespace fr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fr/bre/keymap.h b/src/kaleidoscope/host_keymap/linux/fr/bre/keymap.h new file mode 100644 index 0000000000..196bcfffb9 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fr/bre/keymap.h @@ -0,0 +1,600 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fr +// variant: bre + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_NonUsPound)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_D)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_Slash)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Slash) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_RightBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_NonUsBackslashAndPipe)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', Key_NonUsPound) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_NonUsBackslashAndPipe) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_NonUsPound)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_D)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_Slash)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Slash) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_RightBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_NonUsBackslashAndPipe)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', Key_NonUsPound) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_NonUsBackslashAndPipe) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', LSHIFT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(LSHIFT(Key_NonUsPound))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_RightBracket))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_LeftBracket))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', RALT(Key_Period)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_Period))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_LeftBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_Equals))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_Quote))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'±', RALT(Key_9)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_NonUsPound)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_9))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ñ', LSHIFT(Key_Comma)) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(Key_KeypadMultiply)) \ + OP(L'Ù', LSHIFT(Key_Quote)) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'ß', RALT(LSHIFT(Key_Minus))) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ñ', Key_Comma) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'÷', RALT(Key_KeypadDivide)) \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'ı', RALT(Key_I)) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'ŭ', RALT(Key_Quote)) /* U+016d, XKB_KEY_ubreve, LATIN SMALL LETTER U WITH BREVE */ \ + OP(L'Γ', RALT(LSHIFT(Key_Backtick))) /* U+0393, XKB_KEY_Greek_GAMMA, GREEK CAPITAL LETTER GAMMA */ \ + OP(L'Δ', RALT(LSHIFT(Key_1))) /* U+0394, XKB_KEY_Greek_DELTA, GREEK CAPITAL LETTER DELTA */ \ + OP(L'Θ', RALT(LSHIFT(Key_2))) /* U+0398, XKB_KEY_Greek_THETA, GREEK CAPITAL LETTER THETA */ \ + OP(L'Λ', RALT(LSHIFT(Key_3))) /* U+039b, XKB_KEY_Greek_LAMDA, GREEK CAPITAL LETTER LAMDA */ \ + OP(L'Ξ', RALT(LSHIFT(Key_4))) /* U+039e, XKB_KEY_Greek_XI, GREEK CAPITAL LETTER XI */ \ + OP(L'Π', RALT(LSHIFT(Key_5))) /* U+03a0, XKB_KEY_Greek_PI, GREEK CAPITAL LETTER PI */ \ + OP(L'Σ', RALT(LSHIFT(Key_6))) /* U+03a3, XKB_KEY_Greek_SIGMA, GREEK CAPITAL LETTER SIGMA */ \ + OP(L'Φ', RALT(LSHIFT(Key_7))) /* U+03a6, XKB_KEY_Greek_PHI, GREEK CAPITAL LETTER PHI */ \ + OP(L'Ψ', RALT(LSHIFT(Key_8))) /* U+03a8, XKB_KEY_Greek_PSI, GREEK CAPITAL LETTER PSI */ \ + OP(L'Ω', RALT(LSHIFT(Key_0))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'α', RALT(LSHIFT(Key_Q))) /* U+03b1, XKB_KEY_Greek_alpha, GREEK SMALL LETTER ALPHA */ \ + OP(L'β', RALT(Key_B)) /* U+03b2, XKB_KEY_Greek_beta, GREEK SMALL LETTER BETA */ \ + OP(L'γ', RALT(Key_G)) /* U+03b3, XKB_KEY_Greek_gamma, GREEK SMALL LETTER GAMMA */ \ + OP(L'δ', RALT(LSHIFT(Key_D))) /* U+03b4, XKB_KEY_Greek_delta, GREEK SMALL LETTER DELTA */ \ + OP(L'ε', RALT(LSHIFT(Key_E))) /* U+03b5, XKB_KEY_Greek_epsilon, GREEK SMALL LETTER EPSILON */ \ + OP(L'ζ', RALT(LSHIFT(Key_Z))) /* U+03b6, XKB_KEY_Greek_zeta, GREEK SMALL LETTER ZETA */ \ + OP(L'η', RALT(Key_H)) /* U+03b7, XKB_KEY_Greek_eta, GREEK SMALL LETTER ETA */ \ + OP(L'θ', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+03b8, XKB_KEY_Greek_theta, GREEK SMALL LETTER THETA */ \ + OP(L'ι', RALT(LSHIFT(Key_I))) /* U+03b9, XKB_KEY_Greek_iota, GREEK SMALL LETTER IOTA */ \ + OP(L'κ', RALT(Key_K)) /* U+03ba, XKB_KEY_Greek_kappa, GREEK SMALL LETTER KAPPA */ \ + OP(L'λ', RALT(Key_L)) /* U+03bb, XKB_KEY_Greek_lamda, GREEK SMALL LETTER LAMDA */ \ + OP(L'μ', RALT(Key_Semicolon)) /* U+03bc, XKB_KEY_Greek_mu, GREEK SMALL LETTER MU */ \ + OP(L'ν', RALT(Key_N)) /* U+03bd, XKB_KEY_Greek_nu, GREEK SMALL LETTER NU */ \ + OP(L'ξ', RALT(Key_X)) /* U+03be, XKB_KEY_Greek_xi, GREEK SMALL LETTER XI */ \ + OP(L'ο', RALT(LSHIFT(Key_M))) /* U+03bf, XKB_KEY_Greek_omicron, GREEK SMALL LETTER OMICRON */ \ + OP(L'π', RALT(Key_P)) /* U+03c0, XKB_KEY_Greek_pi, GREEK SMALL LETTER PI */ \ + OP(L'ρ', RALT(Key_R)) /* U+03c1, XKB_KEY_Greek_rho, GREEK SMALL LETTER RHO */ \ + OP(L'ς', RALT(Key_J)) /* U+03c2, XKB_KEY_Greek_finalsmallsigma, GREEK SMALL LETTER FINAL SIGMA */ \ + OP(L'σ', RALT(Key_S)) /* U+03c3, XKB_KEY_Greek_sigma, GREEK SMALL LETTER SIGMA */ \ + OP(L'τ', RALT(Key_T)) /* U+03c4, XKB_KEY_Greek_tau, GREEK SMALL LETTER TAU */ \ + OP(L'υ', RALT(Key_U)) /* U+03c5, XKB_KEY_Greek_upsilon, GREEK SMALL LETTER UPSILON */ \ + OP(L'φ', RALT(Key_F)) /* U+03c6, XKB_KEY_Greek_phi, GREEK SMALL LETTER PHI */ \ + OP(L'χ', RALT(LSHIFT(Key_C))) /* U+03c7, XKB_KEY_Greek_chi, GREEK SMALL LETTER CHI */ \ + OP(L'ψ', RALT(Key_Y)) /* U+03c8, XKB_KEY_Greek_psi, GREEK SMALL LETTER PSI */ \ + OP(L'ω', RALT(Key_W)) /* U+03c9, XKB_KEY_Greek_omega, GREEK SMALL LETTER OMEGA */ \ + OP(L' ', RALT(LSHIFT(Key_KeypadDot))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Keypad4)) \ + OP(L'↑', RALT(Key_Keypad8)) \ + OP(L'→', RALT(Key_Keypad6)) \ + OP(L'↓', RALT(Key_Keypad2)) \ + OP(L'↔', RALT(Key_Keypad5)) \ + OP(L'↕', RALT(Key_Keypad0)) \ + OP(L'↖', RALT(Key_Keypad7)) \ + OP(L'↗', RALT(Key_Keypad9)) \ + OP(L'↘', RALT(Key_Keypad3)) \ + OP(L'↙', RALT(Key_Keypad1)) \ + OP(L'⇐', RALT(LSHIFT(Key_Keypad4))) \ + OP(L'⇑', RALT(LSHIFT(Key_Keypad8))) \ + OP(L'⇒', RALT(LSHIFT(Key_Keypad6))) \ + OP(L'⇓', RALT(LSHIFT(Key_Keypad2))) \ + OP(L'⇔', RALT(LSHIFT(Key_Keypad5))) \ + OP(L'⇕', RALT(LSHIFT(Key_Keypad0))) \ + OP(L'⇖', RALT(LSHIFT(Key_Keypad7))) \ + OP(L'⇗', RALT(LSHIFT(Key_Keypad9))) \ + OP(L'⇘', RALT(LSHIFT(Key_Keypad3))) \ + OP(L'⇙', RALT(LSHIFT(Key_Keypad1))) \ + OP(L'−', RALT(Key_KeypadSubtract)) \ + OP(L'∕', LSHIFT(Key_KeypadDivide)) \ + OP(L'⋅', LSHIFT(Key_KeypadMultiply)) \ + OP(L'', Key_M) \ + OP(L'', LSHIFT(Key_M)) \ + OP(L'', RALT(Key_M)) \ + OP(L'', Key_Q) \ + OP(L'', LSHIFT(Key_Q)) \ + OP(L'', RALT(Key_Q)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_DELTA, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_Greek_GAMMA, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_Greek_LAMDA, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_Greek_PHI, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_Greek_PI, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_Greek_PSI, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_Greek_SIGMA, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_Greek_THETA, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Greek_XI, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_Greek_alpha, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Greek_beta, RALT(Key_B)) \ + OP(XKB_KEY_Greek_chi, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Greek_delta, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Greek_epsilon, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Greek_eta, RALT(Key_H)) \ + OP(XKB_KEY_Greek_finalsmallsigma, RALT(Key_J)) \ + OP(XKB_KEY_Greek_gamma, RALT(Key_G)) \ + OP(XKB_KEY_Greek_iota, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Greek_kappa, RALT(Key_K)) \ + OP(XKB_KEY_Greek_lamda, RALT(Key_L)) \ + OP(XKB_KEY_Greek_mu, RALT(Key_Semicolon)) \ + OP(XKB_KEY_Greek_nu, RALT(Key_N)) \ + OP(XKB_KEY_Greek_omega, RALT(Key_W)) \ + OP(XKB_KEY_Greek_omicron, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_Greek_phi, RALT(Key_F)) \ + OP(XKB_KEY_Greek_pi, RALT(Key_P)) \ + OP(XKB_KEY_Greek_psi, RALT(Key_Y)) \ + OP(XKB_KEY_Greek_rho, RALT(Key_R)) \ + OP(XKB_KEY_Greek_sigma, RALT(Key_S)) \ + OP(XKB_KEY_Greek_tau, RALT(Key_T)) \ + OP(XKB_KEY_Greek_theta, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_Greek_upsilon, RALT(Key_U)) \ + OP(XKB_KEY_Greek_xi, RALT(Key_X)) \ + OP(XKB_KEY_Greek_zeta, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ugrave, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Slash) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Backtick)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, LSHIFT(Key_Minus)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_2)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(Key_1)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, RALT(Key_D)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, LSHIFT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_ntilde, Key_Comma) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, RALT(Key_Slash)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(Key_9)) \ + OP(XKB_KEY_q, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_question, Key_NonUsPound) \ + OP(XKB_KEY_questiondown, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_Period)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_slash, Key_RightBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ubreve, RALT(Key_Quote)) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, Key_8) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fr { +namespace bre { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace bre +} // namespace fr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fr/dvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/fr/dvorak/keymap.h new file mode 100644 index 0000000000..66bd419eb9 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fr/dvorak/keymap.h @@ -0,0 +1,435 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fr +// variant: dvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_T)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_0) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_NonUsPound)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('%', LSHIFT(Key_Equals)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_RightBracket)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_W) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_7) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_9) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_C) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_3) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_T) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_2) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Q) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_W)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_1) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Q)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_C)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_S)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_G)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_Semicolon)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_F)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_H)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_R)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_Y)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_V)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_Slash)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_P)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_Comma)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_O)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_A)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_Period)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_M)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_J)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_D)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_U)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Quote)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_N)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_B)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_LeftBracket)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_5) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', Key_Backtick) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_S) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_G) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_Semicolon) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_F) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_H) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_R) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_Y) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_V) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_Slash) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_P) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_Comma) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_O) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_A) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_Period) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_M) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_J) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_D) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_U) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Quote) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_N) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_B) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_LeftBracket) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('|', LSHIFT(Key_Z)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('~', Key_NonUsPound) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_T)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_0) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_NonUsPound)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'%', LSHIFT(Key_Equals)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_RightBracket)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_W) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_7) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_9) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_C) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_3) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_T) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_2) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Q) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_W)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_1) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Q)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_C)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_S)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_G)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_Semicolon)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_F)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_H)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_R)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_Y)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_V)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_Slash)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_P)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_Comma)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_O)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_A)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_Period)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_M)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_J)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_D)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_U)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Quote)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_N)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_B)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_LeftBracket)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_5) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', Key_Backtick) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_S) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_G) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_Semicolon) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_F) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_H) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_R) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_Y) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_V) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_Slash) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_P) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_Comma) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_O) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_A) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_Period) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_M) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_J) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_D) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_U) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Quote) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_N) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_B) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_LeftBracket) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'|', LSHIFT(Key_Z)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'~', Key_NonUsPound) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'à', Key_NonUsBackslashAndPipe) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ç', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_4) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_E) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_S)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_G)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_F)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_H)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_R)) \ + OP(XKB_KEY_H, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_V)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Latch, Key_8) /* XKB_KEY_ISO_Level3_Latch */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_K, LSHIFT(Key_P)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_O)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_A)) \ + OP(XKB_KEY_P, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_M)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_J)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_D)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_U)) \ + OP(XKB_KEY_W, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_X, LSHIFT(Key_N)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_B)) \ + OP(XKB_KEY_Z, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_a, Key_S) \ + OP(XKB_KEY_agrave, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_apostrophe, Key_W) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, Key_NonUsPound) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_at, LSHIFT(Key_C)) \ + OP(XKB_KEY_b, Key_G) \ + OP(XKB_KEY_backslash, Key_5) \ + OP(XKB_KEY_bar, LSHIFT(Key_Z)) \ + OP(XKB_KEY_bracketleft, Key_Minus) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_ccedilla, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, Key_Q) \ + OP(XKB_KEY_comma, Key_C) \ + OP(XKB_KEY_d, Key_Semicolon) \ + OP(XKB_KEY_dead_circumflex, Key_6) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_e, Key_F) \ + OP(XKB_KEY_eacute, Key_E) \ + OP(XKB_KEY_egrave, Key_4) \ + OP(XKB_KEY_equal, Key_1) \ + OP(XKB_KEY_exclam, LSHIFT(Key_T)) \ + OP(XKB_KEY_f, Key_H) \ + OP(XKB_KEY_g, Key_R) \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_h, Key_Y) \ + OP(XKB_KEY_i, Key_V) \ + OP(XKB_KEY_j, Key_Slash) \ + OP(XKB_KEY_k, Key_P) \ + OP(XKB_KEY_l, Key_Comma) \ + OP(XKB_KEY_less, LSHIFT(Key_W)) \ + OP(XKB_KEY_m, Key_O) \ + OP(XKB_KEY_minus, Key_3) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_o, Key_A) \ + OP(XKB_KEY_p, Key_Period) \ + OP(XKB_KEY_parenleft, Key_7) \ + OP(XKB_KEY_parenright, Key_9) \ + OP(XKB_KEY_percent, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_period, Key_T) \ + OP(XKB_KEY_plus, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_Q)) \ + OP(XKB_KEY_quotedbl, Key_0) \ + OP(XKB_KEY_r, Key_M) \ + OP(XKB_KEY_s, Key_J) \ + OP(XKB_KEY_semicolon, Key_Z) \ + OP(XKB_KEY_slash, Key_2) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_u, Key_D) \ + OP(XKB_KEY_underscore, Key_Backtick) \ + OP(XKB_KEY_v, Key_U) \ + OP(XKB_KEY_w, Key_Quote) \ + OP(XKB_KEY_x, Key_N) \ + OP(XKB_KEY_y, Key_B) \ + OP(XKB_KEY_z, Key_LeftBracket) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fr { +namespace dvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak +} // namespace fr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fr/geo/keymap.h b/src/kaleidoscope/host_keymap/linux/fr/geo/keymap.h new file mode 100644 index 0000000000..be5f562421 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fr/geo/keymap.h @@ -0,0 +1,387 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fr +// variant: geo + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Backtick) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('%', Key_3) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('\'', RALT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_4) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_0) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_5) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_6) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_Equals) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_Equals)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', Key_7) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('J', LSHIFT(Key_Quote)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('~', RALT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Backtick) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'%', Key_3) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'\'', RALT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_4) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_0) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_5) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_6) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_Equals) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_Equals)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', Key_7) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'J', LSHIFT(Key_Quote)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'~', RALT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_7)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', LSHIFT(Key_NonUsPound)) \ + OP(L'«', Key_NonUsBackslashAndPipe) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(Key_R)) \ + OP(L'°', Key_9) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'»', RALT(Key_Period)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'ა', Key_Q) /* U+10d0, XKB_KEY_Georgian_an, GEORGIAN LETTER AN */ \ + OP(L'ბ', Key_B) /* U+10d1, XKB_KEY_Georgian_ban, GEORGIAN LETTER BAN */ \ + OP(L'გ', Key_G) /* U+10d2, XKB_KEY_Georgian_gan, GEORGIAN LETTER GAN */ \ + OP(L'დ', Key_D) /* U+10d3, XKB_KEY_Georgian_don, GEORGIAN LETTER DON */ \ + OP(L'ე', Key_E) /* U+10d4, XKB_KEY_Georgian_en, GEORGIAN LETTER EN */ \ + OP(L'ვ', Key_V) /* U+10d5, XKB_KEY_Georgian_vin, GEORGIAN LETTER VIN */ \ + OP(L'ზ', Key_W) /* U+10d6, XKB_KEY_Georgian_zen, GEORGIAN LETTER ZEN */ \ + OP(L'თ', Key_LeftBracket) /* U+10d7, XKB_KEY_Georgian_tan, GEORGIAN LETTER TAN */ \ + OP(L'ი', Key_I) /* U+10d8, XKB_KEY_Georgian_in, GEORGIAN LETTER IN */ \ + OP(L'კ', Key_K) /* U+10d9, XKB_KEY_Georgian_kan, GEORGIAN LETTER KAN */ \ + OP(L'ლ', Key_L) /* U+10da, XKB_KEY_Georgian_las, GEORGIAN LETTER LAS */ \ + OP(L'მ', Key_Semicolon) /* U+10db, XKB_KEY_Georgian_man, GEORGIAN LETTER MAN */ \ + OP(L'ნ', Key_N) /* U+10dc, XKB_KEY_Georgian_nar, GEORGIAN LETTER NAR */ \ + OP(L'ო', Key_O) /* U+10dd, XKB_KEY_Georgian_on, GEORGIAN LETTER ON */ \ + OP(L'პ', Key_P) /* U+10de, XKB_KEY_Georgian_par, GEORGIAN LETTER PAR */ \ + OP(L'ჟ', Key_Quote) /* U+10df, XKB_KEY_Georgian_zhar, GEORGIAN LETTER ZHAR */ \ + OP(L'რ', Key_R) /* U+10e0, XKB_KEY_Georgian_rae, GEORGIAN LETTER RAE */ \ + OP(L'ს', Key_S) /* U+10e1, XKB_KEY_Georgian_san, GEORGIAN LETTER SAN */ \ + OP(L'ტ', Key_T) /* U+10e2, XKB_KEY_Georgian_tar, GEORGIAN LETTER TAR */ \ + OP(L'უ', Key_U) /* U+10e3, XKB_KEY_Georgian_un, GEORGIAN LETTER UN */ \ + OP(L'ფ', Key_F) /* U+10e4, XKB_KEY_Georgian_phar, GEORGIAN LETTER PHAR */ \ + OP(L'ქ', Key_A) /* U+10e5, XKB_KEY_Georgian_khar, GEORGIAN LETTER KHAR */ \ + OP(L'ღ', Key_Period) /* U+10e6, XKB_KEY_Georgian_ghan, GEORGIAN LETTER GHAN */ \ + OP(L'ყ', Key_Y) /* U+10e7, XKB_KEY_Georgian_qar, GEORGIAN LETTER QAR */ \ + OP(L'შ', Key_Comma) /* U+10e8, XKB_KEY_Georgian_shin, GEORGIAN LETTER SHIN */ \ + OP(L'ჩ', Key_NonUsPound) /* U+10e9, XKB_KEY_Georgian_chin, GEORGIAN LETTER CHIN */ \ + OP(L'ც', Key_C) /* U+10ea, XKB_KEY_Georgian_can, GEORGIAN LETTER CAN */ \ + OP(L'ძ', Key_RightBracket) /* U+10eb, XKB_KEY_Georgian_jil, GEORGIAN LETTER JIL */ \ + OP(L'წ', Key_Z) /* U+10ec, XKB_KEY_Georgian_cil, GEORGIAN LETTER CIL */ \ + OP(L'ჭ', Key_Slash) /* U+10ed, XKB_KEY_Georgian_char, GEORGIAN LETTER CHAR */ \ + OP(L'ხ', Key_X) /* U+10ee, XKB_KEY_Georgian_xan, GEORGIAN LETTER XAN */ \ + OP(L'ჯ', Key_J) /* U+10ef, XKB_KEY_Georgian_jhan, GEORGIAN LETTER JHAN */ \ + OP(L'ჰ', Key_H) /* U+10f0, XKB_KEY_Georgian_hae, GEORGIAN LETTER HAE */ \ + OP(L'ჱ', RALT(Key_E)) /* U+10f1, XKB_KEY_Georgian_he, GEORGIAN LETTER HE */ \ + OP(L'ჲ', RALT(Key_I)) /* U+10f2, XKB_KEY_Georgian_hie, GEORGIAN LETTER HIE */ \ + OP(L'ჳ', RALT(Key_V)) /* U+10f3, XKB_KEY_Georgian_we, GEORGIAN LETTER WE */ \ + OP(L'ჴ', RALT(Key_X)) /* U+10f4, XKB_KEY_Georgian_har, GEORGIAN LETTER HAR */ \ + OP(L'ჵ', RALT(Key_H)) /* U+10f5, XKB_KEY_Georgian_hoe, GEORGIAN LETTER HOE */ \ + OP(L'ჶ', RALT(Key_F)) /* U+10f6, XKB_KEY_Georgian_fi, GEORGIAN LETTER FI */ \ + OP(L'ჷ', RALT(Key_J)) \ + OP(L'ჸ', RALT(Key_Y)) \ + OP(L'ჹ', RALT(Key_G)) \ + OP(L'ჺ', LSHIFT(Key_Q)) \ + OP(L'჻', RALT(Key_Slash)) \ + OP(L'ჼ', RALT(Key_N)) \ + OP(L'–', RALT(Key_Equals)) \ + OP(L'—', RALT(Key_Minus)) \ + OP(L'“', RALT(Key_3)) \ + OP(L'„', Key_1) \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'№', Key_2) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Georgian_an, Key_Q) \ + OP(XKB_KEY_Georgian_ban, Key_B) \ + OP(XKB_KEY_Georgian_can, Key_C) \ + OP(XKB_KEY_Georgian_char, Key_Slash) \ + OP(XKB_KEY_Georgian_chin, Key_NonUsPound) \ + OP(XKB_KEY_Georgian_cil, Key_Z) \ + OP(XKB_KEY_Georgian_don, Key_D) \ + OP(XKB_KEY_Georgian_en, Key_E) \ + OP(XKB_KEY_Georgian_fi, RALT(Key_F)) \ + OP(XKB_KEY_Georgian_gan, Key_G) \ + OP(XKB_KEY_Georgian_ghan, Key_Period) \ + OP(XKB_KEY_Georgian_hae, Key_H) \ + OP(XKB_KEY_Georgian_har, RALT(Key_X)) \ + OP(XKB_KEY_Georgian_he, RALT(Key_E)) \ + OP(XKB_KEY_Georgian_hie, RALT(Key_I)) \ + OP(XKB_KEY_Georgian_hoe, RALT(Key_H)) \ + OP(XKB_KEY_Georgian_in, Key_I) \ + OP(XKB_KEY_Georgian_jhan, Key_J) \ + OP(XKB_KEY_Georgian_jil, Key_RightBracket) \ + OP(XKB_KEY_Georgian_kan, Key_K) \ + OP(XKB_KEY_Georgian_khar, Key_A) \ + OP(XKB_KEY_Georgian_las, Key_L) \ + OP(XKB_KEY_Georgian_man, Key_Semicolon) \ + OP(XKB_KEY_Georgian_nar, Key_N) \ + OP(XKB_KEY_Georgian_on, Key_O) \ + OP(XKB_KEY_Georgian_par, Key_P) \ + OP(XKB_KEY_Georgian_phar, Key_F) \ + OP(XKB_KEY_Georgian_qar, Key_Y) \ + OP(XKB_KEY_Georgian_rae, Key_R) \ + OP(XKB_KEY_Georgian_san, Key_S) \ + OP(XKB_KEY_Georgian_shin, Key_Comma) \ + OP(XKB_KEY_Georgian_tan, Key_LeftBracket) \ + OP(XKB_KEY_Georgian_tar, Key_T) \ + OP(XKB_KEY_Georgian_un, Key_U) \ + OP(XKB_KEY_Georgian_vin, Key_V) \ + OP(XKB_KEY_Georgian_we, RALT(Key_V)) \ + OP(XKB_KEY_Georgian_xan, Key_X) \ + OP(XKB_KEY_Georgian_zen, Key_W) \ + OP(XKB_KEY_Georgian_zhar, Key_Quote) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_apostrophe, RALT(Key_1)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, Key_5) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_degree, Key_9) \ + OP(XKB_KEY_exclam, Key_Backtick) \ + OP(XKB_KEY_greater, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_guillemotleft, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_guillemotright, RALT(Key_Period)) \ + OP(XKB_KEY_less, Key_Equals) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_parenleft, Key_4) \ + OP(XKB_KEY_parenright, Key_0) \ + OP(XKB_KEY_percent, Key_3) \ + OP(XKB_KEY_question, Key_7) \ + OP(XKB_KEY_section, RALT(Key_7)) \ + OP(XKB_KEY_semicolon, Key_6) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fr { +namespace geo { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace geo +} // namespace fr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fr/latin9/keymap.h b/src/kaleidoscope/host_keymap/linux/fr/latin9/keymap.h new file mode 100644 index 0000000000..84eb560c5c --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fr/latin9/keymap.h @@ -0,0 +1,605 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fr +// variant: latin9 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(LSHIFT(Key_P))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(LSHIFT(Key_P))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_Slash)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_E))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_NonUsPound))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_6))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_5))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_N)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_V)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_8))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_F)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_Quote)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_NonUsPound)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(LSHIFT(Key_4))) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', LSHIFT(Key_NonUsPound)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_P)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_1))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¸', RALT(LSHIFT(Key_3))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'¹', RALT(Key_Semicolon)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_Semicolon))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_M)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', RALT(LSHIFT(Key_0))) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Â', RALT(Key_A)) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ä', RALT(LSHIFT(Key_A))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', RALT(LSHIFT(Key_W))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_G))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_9))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', RALT(LSHIFT(Key_7))) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'É', RALT(LSHIFT(Key_2))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ê', RALT(Key_D)) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Ë', RALT(LSHIFT(Key_D))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Î', RALT(Key_K)) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ï', RALT(LSHIFT(Key_K))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_H))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ô', RALT(Key_L)) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', RALT(LSHIFT(Key_L))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_S))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ù', RALT(LSHIFT(Key_Quote))) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'Û', RALT(Key_J)) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', RALT(LSHIFT(Key_J))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Ý', RALT(LSHIFT(Key_Y))) /* U+00dd, XKB_KEY_Yacute, LATIN CAPITAL LETTER Y WITH ACUTE */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_B)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'â', RALT(Key_Q)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ä', RALT(LSHIFT(Key_Q))) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', RALT(Key_W)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_G)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ê', RALT(Key_RightBracket)) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'ë', RALT(LSHIFT(Key_RightBracket))) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ï', RALT(LSHIFT(Key_I))) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_H)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ô', RALT(Key_O)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', RALT(LSHIFT(Key_O))) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_Period)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_S)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'û', RALT(Key_U)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', RALT(LSHIFT(Key_U))) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'ý', RALT(Key_Y)) /* U+00fd, XKB_KEY_yacute, LATIN SMALL LETTER Y WITH ACUTE */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ÿ', RALT(LSHIFT(Key_Minus))) /* U+00ff, XKB_KEY_ydiaeresis, LATIN SMALL LETTER Y WITH DIAERESIS */ \ + OP(L'Œ', LSHIFT(Key_Backtick)) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', Key_Backtick) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_Backtick)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_Backtick))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Acircumflex, RALT(Key_A)) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Agrave, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_H))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Ecircumflex, RALT(Key_D)) \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Egrave, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(Key_K)) \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Ocircumflex, RALT(Key_L)) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(Key_J)) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Ugrave, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Yacute, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_acircumflex, RALT(Key_Q)) \ + OP(XKB_KEY_acute, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_adiaeresis, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_ae, RALT(Key_G)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_W)) \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_1)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_LeftBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_division, RALT(Key_Period)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_ecircumflex, RALT(Key_RightBracket)) \ + OP(XKB_KEY_ediaeresis, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_H)) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_exclamdown, RALT(Key_Slash)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(LSHIFT(Key_P))) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_idiaeresis, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_Backtick)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_multiply, RALT(Key_Comma)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, RALT(Key_O)) \ + OP(XKB_KEY_odiaeresis, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_oe, Key_Backtick) \ + OP(XKB_KEY_onesuperior, RALT(Key_Semicolon)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_S)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_P)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(Key_F)) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_V)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_B)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threesuperior, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_twosuperior, RALT(Key_Quote)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, RALT(Key_U)) \ + OP(XKB_KEY_udiaeresis, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, Key_8) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yacute, RALT(Key_Y)) \ + OP(XKB_KEY_ydiaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fr { +namespace latin9 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace latin9 +} // namespace fr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fr/latin9_nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/fr/latin9_nodeadkeys/keymap.h new file mode 100644 index 0000000000..c7380b4a35 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fr/latin9_nodeadkeys/keymap.h @@ -0,0 +1,600 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fr +// variant: latin9_nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_LeftBracket) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_LeftBracket) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_Slash)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_E))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_NonUsPound))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_6))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', LSHIFT(Key_LeftBracket)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_N)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_V)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_8))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_F)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_Quote)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_NonUsPound)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(LSHIFT(Key_4))) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', LSHIFT(Key_NonUsPound)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_P)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_1))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¸', RALT(LSHIFT(Key_3))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'¹', RALT(Key_Semicolon)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_Semicolon))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_M)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', RALT(LSHIFT(Key_0))) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Â', RALT(Key_A)) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ä', RALT(LSHIFT(Key_A))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', RALT(LSHIFT(Key_W))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_G))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_9))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', RALT(LSHIFT(Key_7))) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'É', RALT(LSHIFT(Key_2))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ê', RALT(Key_D)) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Ë', RALT(LSHIFT(Key_D))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Î', RALT(Key_K)) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ï', RALT(LSHIFT(Key_K))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_H))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ô', RALT(Key_L)) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', RALT(LSHIFT(Key_L))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_S))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ù', RALT(LSHIFT(Key_Quote))) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'Û', RALT(Key_J)) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', RALT(LSHIFT(Key_J))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Ý', RALT(LSHIFT(Key_Y))) /* U+00dd, XKB_KEY_Yacute, LATIN CAPITAL LETTER Y WITH ACUTE */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_B)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'â', RALT(Key_Q)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ä', RALT(LSHIFT(Key_Q))) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', RALT(Key_W)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_G)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ê', RALT(Key_RightBracket)) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'ë', RALT(LSHIFT(Key_RightBracket))) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ï', RALT(LSHIFT(Key_I))) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_H)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ô', RALT(Key_O)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', RALT(LSHIFT(Key_O))) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_Period)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_S)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'û', RALT(Key_U)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', RALT(LSHIFT(Key_U))) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'ý', RALT(Key_Y)) /* U+00fd, XKB_KEY_yacute, LATIN SMALL LETTER Y WITH ACUTE */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ÿ', RALT(LSHIFT(Key_Minus))) /* U+00ff, XKB_KEY_ydiaeresis, LATIN SMALL LETTER Y WITH DIAERESIS */ \ + OP(L'Œ', LSHIFT(Key_Backtick)) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', Key_Backtick) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_Backtick)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_Backtick))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Acircumflex, RALT(Key_A)) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Agrave, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_H))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Ecircumflex, RALT(Key_D)) \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Egrave, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(Key_K)) \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Ocircumflex, RALT(Key_L)) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(Key_J)) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Ugrave, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Yacute, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_acircumflex, RALT(Key_Q)) \ + OP(XKB_KEY_acute, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_adiaeresis, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_ae, RALT(Key_G)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_W)) \ + OP(XKB_KEY_asciicircum, Key_LeftBracket) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_diaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_division, RALT(Key_Period)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_ecircumflex, RALT(Key_RightBracket)) \ + OP(XKB_KEY_ediaeresis, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_H)) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_exclamdown, RALT(Key_Slash)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_idiaeresis, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_Backtick)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_multiply, RALT(Key_Comma)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, RALT(Key_O)) \ + OP(XKB_KEY_odiaeresis, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_oe, Key_Backtick) \ + OP(XKB_KEY_onesuperior, RALT(Key_Semicolon)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_S)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_P)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(Key_F)) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_V)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_B)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threesuperior, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_twosuperior, RALT(Key_Quote)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, RALT(Key_U)) \ + OP(XKB_KEY_udiaeresis, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, Key_8) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yacute, RALT(Key_Y)) \ + OP(XKB_KEY_ydiaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fr { +namespace latin9_nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace latin9_nodeadkeys +} // namespace fr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fr/latin9_sundeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/fr/latin9_sundeadkeys/keymap.h new file mode 100644 index 0000000000..ce747c7945 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fr/latin9_sundeadkeys/keymap.h @@ -0,0 +1,605 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fr +// variant: latin9_sundeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(LSHIFT(Key_P))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(LSHIFT(Key_P))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_Slash)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_E))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_NonUsPound))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_6))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_5))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_N)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_V)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_8))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_F)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_Quote)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_NonUsPound)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(LSHIFT(Key_4))) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', LSHIFT(Key_NonUsPound)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_P)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_1))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¸', RALT(LSHIFT(Key_3))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'¹', RALT(Key_Semicolon)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_Semicolon))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_M)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', RALT(LSHIFT(Key_0))) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Â', RALT(Key_A)) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ä', RALT(LSHIFT(Key_A))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', RALT(LSHIFT(Key_W))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_G))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_9))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', RALT(LSHIFT(Key_7))) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'É', RALT(LSHIFT(Key_2))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ê', RALT(Key_D)) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Ë', RALT(LSHIFT(Key_D))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Î', RALT(Key_K)) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ï', RALT(LSHIFT(Key_K))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_H))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ô', RALT(Key_L)) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', RALT(LSHIFT(Key_L))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_S))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ù', RALT(LSHIFT(Key_Quote))) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'Û', RALT(Key_J)) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', RALT(LSHIFT(Key_J))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Ý', RALT(LSHIFT(Key_Y))) /* U+00dd, XKB_KEY_Yacute, LATIN CAPITAL LETTER Y WITH ACUTE */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_B)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'â', RALT(Key_Q)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ä', RALT(LSHIFT(Key_Q))) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', RALT(Key_W)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_G)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ê', RALT(Key_RightBracket)) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'ë', RALT(LSHIFT(Key_RightBracket))) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ï', RALT(LSHIFT(Key_I))) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_H)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ô', RALT(Key_O)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', RALT(LSHIFT(Key_O))) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_Period)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_S)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'û', RALT(Key_U)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', RALT(LSHIFT(Key_U))) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'ý', RALT(Key_Y)) /* U+00fd, XKB_KEY_yacute, LATIN SMALL LETTER Y WITH ACUTE */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ÿ', RALT(LSHIFT(Key_Minus))) /* U+00ff, XKB_KEY_ydiaeresis, LATIN SMALL LETTER Y WITH DIAERESIS */ \ + OP(L'Œ', LSHIFT(Key_Backtick)) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', Key_Backtick) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_Backtick)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_Backtick))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Acircumflex, RALT(Key_A)) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Agrave, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_H))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Ecircumflex, RALT(Key_D)) \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Egrave, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(Key_K)) \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Ocircumflex, RALT(Key_L)) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(Key_J)) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Ugrave, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Yacute, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_acircumflex, RALT(Key_Q)) \ + OP(XKB_KEY_acute, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_adiaeresis, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_ae, RALT(Key_G)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_W)) \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_1)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_LeftBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_division, RALT(Key_Period)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_ecircumflex, RALT(Key_RightBracket)) \ + OP(XKB_KEY_ediaeresis, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_H)) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_exclamdown, RALT(Key_Slash)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(LSHIFT(Key_P))) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_idiaeresis, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_Backtick)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_multiply, RALT(Key_Comma)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, RALT(Key_O)) \ + OP(XKB_KEY_odiaeresis, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_oe, Key_Backtick) \ + OP(XKB_KEY_onesuperior, RALT(Key_Semicolon)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_S)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_P)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(Key_F)) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_V)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_B)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threesuperior, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_twosuperior, RALT(Key_Quote)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, RALT(Key_U)) \ + OP(XKB_KEY_udiaeresis, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, Key_8) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yacute, RALT(Key_Y)) \ + OP(XKB_KEY_ydiaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fr { +namespace latin9_sundeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace latin9_sundeadkeys +} // namespace fr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fr/mac/keymap.h b/src/kaleidoscope/host_keymap/linux/fr/mac/keymap.h new file mode 100644 index 0000000000..4e950bd5a6 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fr/mac/keymap.h @@ -0,0 +1,564 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fr +// variant: mac + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_8) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_Backtick)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Slash) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_Backtick) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(LSHIFT(Key_5))) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(LSHIFT(Key_Period))) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(LSHIFT(Key_Minus))) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_5)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(LSHIFT(Key_L))) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Minus)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_N))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_8) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_Backtick)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Slash) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_Backtick) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(LSHIFT(Key_5))) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(LSHIFT(Key_Period))) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(LSHIFT(Key_Minus))) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_5)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(LSHIFT(Key_L))) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Minus)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_N))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_8)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_C))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_NonUsPound)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_R))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_RightBracket))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', Key_6) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_U))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_7)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_L)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Slash))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_Semicolon)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_6)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Backtick)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'»', RALT(LSHIFT(Key_7))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(LSHIFT(Key_M))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', RALT(LSHIFT(Key_A))) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Á', RALT(LSHIFT(Key_9))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Â', RALT(Key_W)) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Å', RALT(LSHIFT(Key_W))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Q))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(Key_9)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', RALT(Key_K)) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'É', RALT(LSHIFT(Key_2))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ê', RALT(LSHIFT(Key_E))) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Ë', RALT(LSHIFT(Key_K))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Ì', RALT(Key_H)) /* U+00cc, XKB_KEY_Igrave, LATIN CAPITAL LETTER I WITH GRAVE */ \ + OP(L'Í', RALT(LSHIFT(Key_J))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Î', RALT(LSHIFT(Key_H))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ï', RALT(Key_J)) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ò', RALT(Key_S)) /* U+00d2, XKB_KEY_Ograve, LATIN CAPITAL LETTER O WITH GRAVE */ \ + OP(L'Ó', RALT(LSHIFT(Key_Semicolon))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ô', RALT(LSHIFT(Key_LeftBracket))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ù', RALT(Key_Quote)) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'Ú', RALT(Key_Y)) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Û', RALT(LSHIFT(Key_8))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ß', RALT(Key_B)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'â', RALT(Key_A)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'å', RALT(LSHIFT(Key_6))) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_Q)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ê', RALT(Key_E)) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'ë', RALT(Key_2)) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ï', RALT(LSHIFT(Key_I))) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ô', RALT(Key_LeftBracket)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'÷', RALT(Key_Period)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_0)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'û', RALT(LSHIFT(Key_Quote))) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ÿ', RALT(LSHIFT(Key_Y))) /* U+0178, XKB_KEY_Ydiaeresis, LATIN CAPITAL LETTER Y WITH DIAERESIS */ \ + OP(L'–', RALT(LSHIFT(Key_Equals))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Equals)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'€', RALT(Key_RightBracket)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'⎷', RALT(LSHIFT(Key_V))) /* U+23b7, XKB_KEY_leftradical, RADICAL SYMBOL BOTTOM */ \ + OP(L'♦', RALT(Key_V)) /* U+2666, XKB_KEY_diamond, BLACK DIAMOND SUIT */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_Acircumflex, RALT(Key_W)) \ + OP(XKB_KEY_Agrave, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(Key_9)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Ecircumflex, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Egrave, RALT(Key_K)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_RightBracket)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_Idiaeresis, RALT(Key_J)) \ + OP(XKB_KEY_Igrave, RALT(Key_H)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_Ograve, RALT(Key_S)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, RALT(Key_Y)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_Ugrave, RALT(Key_Quote)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Ydiaeresis, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_acircumflex, RALT(Key_A)) \ + OP(XKB_KEY_ae, RALT(Key_Q)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, Key_Backtick) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_bar, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_braceleft, RALT(Key_5)) \ + OP(XKB_KEY_braceright, RALT(Key_Minus)) \ + OP(XKB_KEY_bracketleft, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_bracketright, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, Key_NonUsPound) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_N)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_diamond, RALT(Key_V)) \ + OP(XKB_KEY_division, RALT(Key_Period)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_ecircumflex, RALT(Key_E)) \ + OP(XKB_KEY_ediaeresis, RALT(Key_2)) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_emdash, RALT(Key_Equals)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_equal, Key_Slash) \ + OP(XKB_KEY_exclam, Key_8) \ + OP(XKB_KEY_exclamdown, RALT(Key_8)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_7)) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_idiaeresis, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftradical, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, RALT(Key_Semicolon)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(Key_L)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_oslash, RALT(Key_0)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_6)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_periodcentered, RALT(Key_Backtick)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_6) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_B)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fr { +namespace mac { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mac +} // namespace fr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fr/nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/fr/nodeadkeys/keymap.h new file mode 100644 index 0000000000..9101347c00 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fr/nodeadkeys/keymap.h @@ -0,0 +1,589 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fr +// variant: nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_LeftBracket) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_LeftBracket) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_RightBracket)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', LSHIFT(Key_LeftBracket)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_W)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_RightBracket))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'´', RALT(Key_M)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_Semicolon)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_Semicolon))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_Q))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'æ', RALT(Key_Q)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ˇ', RALT(LSHIFT(Key_Quote))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_NonUsPound))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_Slash))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_Equals))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_M))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_A))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_acute, RALT(Key_M)) \ + OP(XKB_KEY_ae, RALT(Key_Q)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_LeftBracket) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_RightBracket)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_diaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_W)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, RALT(Key_Semicolon)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, Key_8) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fr { +namespace nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace nodeadkeys +} // namespace fr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fr/oci/keymap.h b/src/kaleidoscope/host_keymap/linux/fr/oci/keymap.h new file mode 100644 index 0000000000..2cd0456e6a --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fr/oci/keymap.h @@ -0,0 +1,636 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fr +// variant: oci + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_Slash)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_E))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_G))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(LSHIFT(Key_C))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Equals))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', LSHIFT(Key_Backtick)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', LSHIFT(Key_NonUsPound)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¹', RALT(Key_Backtick)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_M)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', RALT(LSHIFT(Key_0))) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Á', RALT(LSHIFT(Key_Q))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Â', RALT(LSHIFT(Key_D))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ä', RALT(LSHIFT(Key_A))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_W))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_9))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', RALT(LSHIFT(Key_7))) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'É', RALT(LSHIFT(Key_2))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ê', RALT(LSHIFT(Key_R))) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Ë', RALT(LSHIFT(Key_T))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Í', RALT(LSHIFT(Key_I))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Î', RALT(LSHIFT(Key_J))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ï', RALT(LSHIFT(Key_K))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ò', RALT(LSHIFT(Key_P))) /* U+00d2, XKB_KEY_Ograve, LATIN CAPITAL LETTER O WITH GRAVE */ \ + OP(L'Ó', RALT(LSHIFT(Key_O))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ô', RALT(LSHIFT(Key_L))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', RALT(LSHIFT(Key_Semicolon))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_RightBracket))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ù', RALT(LSHIFT(Key_Quote))) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'Ú', RALT(LSHIFT(Key_U))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Û', RALT(LSHIFT(Key_Y))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', RALT(LSHIFT(Key_H))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'á', RALT(Key_Q)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'â', RALT(Key_D)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_W)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ê', RALT(Key_R)) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'ë', RALT(Key_T)) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'í', RALT(Key_I)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'î', RALT(Key_J)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ï', RALT(Key_K)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ò', RALT(Key_P)) /* U+00f2, XKB_KEY_ograve, LATIN SMALL LETTER O WITH GRAVE */ \ + OP(L'ó', RALT(Key_O)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ô', RALT(Key_L)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', RALT(Key_Semicolon)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_Period)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_RightBracket)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'ú', RALT(Key_U)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'û', RALT(Key_Y)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', RALT(Key_H)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Œ', RALT(LSHIFT(Key_LeftBracket))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_LeftBracket)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'‑', RALT(LSHIFT(Key_6))) \ + OP(L'–', RALT(LSHIFT(Key_5))) \ + OP(L'—', RALT(LSHIFT(Key_4))) \ + OP(L'‘', RALT(Key_F)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_G)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_F))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_Z))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_X))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_S))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(LSHIFT(Key_M))) \ + OP(L' ', RALT(LSHIFT(Key_KeypadDot))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'←', RALT(Key_Keypad4)) \ + OP(L'↑', RALT(Key_Keypad8)) \ + OP(L'→', RALT(Key_V)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_B)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'↔', RALT(Key_Keypad5)) \ + OP(L'↕', RALT(Key_Keypad0)) \ + OP(L'↖', RALT(Key_Keypad7)) \ + OP(L'↗', RALT(Key_Keypad9)) \ + OP(L'↘', RALT(Key_Keypad3)) \ + OP(L'↙', RALT(Key_Keypad1)) \ + OP(L'⇐', RALT(LSHIFT(Key_Keypad4))) \ + OP(L'⇑', RALT(LSHIFT(Key_Keypad8))) \ + OP(L'⇒', RALT(LSHIFT(Key_Keypad6))) \ + OP(L'⇓', RALT(LSHIFT(Key_Keypad2))) \ + OP(L'⇔', RALT(LSHIFT(Key_Keypad5))) \ + OP(L'⇕', RALT(LSHIFT(Key_Keypad0))) \ + OP(L'⇖', RALT(LSHIFT(Key_Keypad7))) \ + OP(L'⇗', RALT(LSHIFT(Key_Keypad9))) \ + OP(L'⇘', RALT(LSHIFT(Key_Keypad3))) \ + OP(L'⇙', RALT(LSHIFT(Key_Keypad1))) \ + OP(L'−', RALT(Key_KeypadSubtract)) \ + OP(L'∕', LSHIFT(Key_KeypadDivide)) \ + OP(L'≠', RALT(LSHIFT(Key_Minus))) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'≤', RALT(Key_NonUsBackslashAndPipe)) /* U+2264, XKB_KEY_lessthanequal, LESS-THAN OR EQUAL TO */ \ + OP(L'≥', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+2265, XKB_KEY_greaterthanequal, GREATER-THAN OR EQUAL TO */ \ + OP(L'⋅', LSHIFT(Key_KeypadMultiply)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Agrave, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Ecircumflex, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Egrave, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Ograve, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_Ugrave, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_aacute, RALT(Key_Q)) \ + OP(XKB_KEY_acircumflex, RALT(Key_D)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ae, RALT(Key_W)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, RALT(Key_Quote)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_1)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(Key_Period)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_downarrow, RALT(Key_B)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_ecircumflex, RALT(Key_R)) \ + OP(XKB_KEY_ediaeresis, RALT(Key_T)) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_exclamdown, RALT(Key_Slash)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_greaterthanequal, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, RALT(Key_I)) \ + OP(XKB_KEY_icircumflex, RALT(Key_J)) \ + OP(XKB_KEY_idiaeresis, RALT(Key_K)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_F)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lessthanequal, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_multiply, RALT(Key_Comma)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Spacebar))) \ + OP(XKB_KEY_notequal, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, RALT(Key_O)) \ + OP(XKB_KEY_ocircumflex, RALT(Key_L)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_Semicolon)) \ + OP(XKB_KEY_oe, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_ograve, RALT(Key_P)) \ + OP(XKB_KEY_onesuperior, RALT(Key_Backtick)) \ + OP(XKB_KEY_oslash, RALT(Key_RightBracket)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_rightarrow, RALT(Key_V)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_G)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threesuperior, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, RALT(Key_U)) \ + OP(XKB_KEY_ucircumflex, RALT(Key_Y)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_H)) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, Key_8) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fr { +namespace oci { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace oci +} // namespace fr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fr/oss/keymap.h b/src/kaleidoscope/host_keymap/linux/fr/oss/keymap.h new file mode 100644 index 0000000000..047466c732 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fr/oss/keymap.h @@ -0,0 +1,630 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fr +// variant: oss + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_Slash)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_E))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_G))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_N)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_C))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Equals))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', LSHIFT(Key_Backtick)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', LSHIFT(Key_NonUsPound)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¹', RALT(Key_Backtick)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_M)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', RALT(LSHIFT(Key_0))) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Â', RALT(LSHIFT(Key_W))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ä', RALT(LSHIFT(Key_A))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_Q))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_9))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', RALT(LSHIFT(Key_7))) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'É', RALT(LSHIFT(Key_2))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ê', RALT(LSHIFT(Key_R))) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Ë', RALT(LSHIFT(Key_D))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ï', RALT(LSHIFT(Key_K))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_H))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ô', RALT(LSHIFT(Key_P))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', RALT(LSHIFT(Key_Semicolon))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_RightBracket))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ù', RALT(LSHIFT(Key_Quote))) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'Û', RALT(LSHIFT(Key_U))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', RALT(LSHIFT(Key_J))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'â', RALT(Key_W)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_Q)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ê', RALT(Key_R)) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'ë', RALT(Key_D)) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ï', RALT(Key_K)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_H)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ô', RALT(Key_P)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', RALT(Key_Semicolon)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_Period)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_RightBracket)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'û', RALT(Key_U)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', RALT(Key_J)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ÿ', RALT(Key_Y)) /* U+00ff, XKB_KEY_ydiaeresis, LATIN SMALL LETTER Y WITH DIAERESIS */ \ + OP(L'Ŀ', RALT(LSHIFT(Key_L))) \ + OP(L'ŀ', RALT(Key_L)) \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ÿ', RALT(LSHIFT(Key_Y))) /* U+0178, XKB_KEY_Ydiaeresis, LATIN CAPITAL LETTER Y WITH DIAERESIS */ \ + OP(L'‑', RALT(LSHIFT(Key_6))) \ + OP(L'–', RALT(LSHIFT(Key_5))) \ + OP(L'—', RALT(LSHIFT(Key_4))) \ + OP(L'‘', RALT(Key_F)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_G)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_F))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_Z))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_X))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_S))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(LSHIFT(Key_M))) \ + OP(L' ', RALT(Key_V)) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'←', RALT(Key_Keypad4)) \ + OP(L'↑', RALT(Key_Keypad8)) \ + OP(L'→', RALT(Key_Keypad6)) \ + OP(L'↓', RALT(Key_B)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'↔', RALT(Key_Keypad5)) \ + OP(L'↕', RALT(Key_Keypad0)) \ + OP(L'↖', RALT(Key_Keypad7)) \ + OP(L'↗', RALT(Key_Keypad9)) \ + OP(L'↘', RALT(Key_Keypad3)) \ + OP(L'↙', RALT(Key_Keypad1)) \ + OP(L'⇐', RALT(LSHIFT(Key_Keypad4))) \ + OP(L'⇑', RALT(LSHIFT(Key_Keypad8))) \ + OP(L'⇒', RALT(LSHIFT(Key_Keypad6))) \ + OP(L'⇓', RALT(LSHIFT(Key_Keypad2))) \ + OP(L'⇔', RALT(LSHIFT(Key_Keypad5))) \ + OP(L'⇕', RALT(LSHIFT(Key_Keypad0))) \ + OP(L'⇖', RALT(LSHIFT(Key_Keypad7))) \ + OP(L'⇗', RALT(LSHIFT(Key_Keypad9))) \ + OP(L'⇘', RALT(LSHIFT(Key_Keypad3))) \ + OP(L'⇙', RALT(LSHIFT(Key_Keypad1))) \ + OP(L'−', RALT(Key_KeypadSubtract)) \ + OP(L'∕', LSHIFT(Key_KeypadDivide)) \ + OP(L'≠', RALT(LSHIFT(Key_Minus))) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'≤', RALT(Key_NonUsBackslashAndPipe)) /* U+2264, XKB_KEY_lessthanequal, LESS-THAN OR EQUAL TO */ \ + OP(L'≥', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+2265, XKB_KEY_greaterthanequal, GREATER-THAN OR EQUAL TO */ \ + OP(L'⋅', LSHIFT(Key_KeypadMultiply)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Agrave, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_H))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Ecircumflex, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Egrave, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Ugrave, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Ydiaeresis, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_acircumflex, RALT(Key_W)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ae, RALT(Key_Q)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Quote)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_1)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_LeftBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(Key_Period)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_downarrow, RALT(Key_B)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_ecircumflex, RALT(Key_R)) \ + OP(XKB_KEY_ediaeresis, RALT(Key_D)) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_H)) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_exclamdown, RALT(Key_Slash)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_greaterthanequal, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_idiaeresis, RALT(Key_K)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_F)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lessthanequal, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_multiply, RALT(Key_Comma)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Spacebar))) \ + OP(XKB_KEY_notequal, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_notsign, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, RALT(Key_P)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_Semicolon)) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_onesuperior, RALT(Key_Backtick)) \ + OP(XKB_KEY_oslash, RALT(Key_RightBracket)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_rightarrow, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_G)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threesuperior, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, RALT(Key_U)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_J)) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, Key_8) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_ydiaeresis, RALT(Key_Y)) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fr { +namespace oss { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace oss +} // namespace fr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fr/oss_latin9/keymap.h b/src/kaleidoscope/host_keymap/linux/fr/oss_latin9/keymap.h new file mode 100644 index 0000000000..7074ea374d --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fr/oss_latin9/keymap.h @@ -0,0 +1,575 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fr +// variant: oss_latin9 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_V)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_Slash)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_E))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_G))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_N)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_C))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Equals))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', LSHIFT(Key_Backtick)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', LSHIFT(Key_NonUsPound)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'·', RALT(Key_L)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_Backtick)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_M)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', RALT(LSHIFT(Key_0))) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Â', RALT(LSHIFT(Key_W))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ä', RALT(LSHIFT(Key_A))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_Q))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_9))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', RALT(LSHIFT(Key_7))) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'É', RALT(LSHIFT(Key_2))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ê', RALT(LSHIFT(Key_R))) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Ë', RALT(LSHIFT(Key_D))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ï', RALT(LSHIFT(Key_K))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_H))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ô', RALT(LSHIFT(Key_P))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', RALT(LSHIFT(Key_Semicolon))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_RightBracket))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ù', RALT(LSHIFT(Key_Quote))) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'Û', RALT(LSHIFT(Key_U))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', RALT(LSHIFT(Key_J))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'â', RALT(Key_W)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_Q)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ê', RALT(Key_R)) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'ë', RALT(Key_D)) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ï', RALT(Key_K)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_H)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ô', RALT(Key_P)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', RALT(Key_Semicolon)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_Period)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_RightBracket)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'û', RALT(Key_U)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', RALT(Key_J)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ÿ', RALT(Key_Y)) /* U+00ff, XKB_KEY_ydiaeresis, LATIN SMALL LETTER Y WITH DIAERESIS */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ÿ', RALT(LSHIFT(Key_Y))) /* U+0178, XKB_KEY_Ydiaeresis, LATIN CAPITAL LETTER Y WITH DIAERESIS */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Agrave, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_H))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Ecircumflex, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Egrave, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Ugrave, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Ydiaeresis, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_acircumflex, RALT(Key_W)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ae, RALT(Key_Q)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Quote)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(Key_1)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_LeftBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(Key_Period)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_ecircumflex, RALT(Key_R)) \ + OP(XKB_KEY_ediaeresis, RALT(Key_D)) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_H)) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_exclamdown, RALT(Key_Slash)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_idiaeresis, RALT(Key_K)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_multiply, RALT(Key_Comma)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_V)) \ + OP(XKB_KEY_notsign, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, RALT(Key_P)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_Semicolon)) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_onesuperior, RALT(Key_Backtick)) \ + OP(XKB_KEY_oslash, RALT(Key_RightBracket)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_periodcentered, RALT(Key_L)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threesuperior, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, RALT(Key_U)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_J)) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, Key_8) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_ydiaeresis, RALT(Key_Y)) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fr { +namespace oss_latin9 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace oss_latin9 +} // namespace fr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fr/oss_nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/fr/oss_nodeadkeys/keymap.h new file mode 100644 index 0000000000..7daa563b05 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fr/oss_nodeadkeys/keymap.h @@ -0,0 +1,635 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fr +// variant: oss_nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_LeftBracket) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_LeftBracket) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_Slash)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_E))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_G))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', LSHIFT(Key_LeftBracket)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_N)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_C))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_NonUsPound))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Equals))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', LSHIFT(Key_Backtick)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Quote)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', LSHIFT(Key_NonUsPound)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Backtick))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'¹', RALT(Key_Backtick)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_M)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', RALT(LSHIFT(Key_0))) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Â', RALT(LSHIFT(Key_W))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ä', RALT(LSHIFT(Key_A))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', RALT(LSHIFT(Key_LeftBracket))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Q))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_9))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', RALT(LSHIFT(Key_7))) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'É', RALT(LSHIFT(Key_2))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ê', RALT(LSHIFT(Key_R))) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Ë', RALT(LSHIFT(Key_D))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ï', RALT(LSHIFT(Key_K))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_H))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ô', RALT(LSHIFT(Key_P))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', RALT(LSHIFT(Key_Semicolon))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_RightBracket))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ù', RALT(LSHIFT(Key_Quote))) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'Û', RALT(LSHIFT(Key_U))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', RALT(LSHIFT(Key_J))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'â', RALT(Key_W)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_Q)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ê', RALT(Key_R)) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'ë', RALT(Key_D)) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ï', RALT(Key_K)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_H)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ô', RALT(Key_P)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', RALT(Key_Semicolon)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_Period)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_RightBracket)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'û', RALT(Key_U)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', RALT(Key_J)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ÿ', RALT(Key_Y)) /* U+00ff, XKB_KEY_ydiaeresis, LATIN SMALL LETTER Y WITH DIAERESIS */ \ + OP(L'Ŀ', RALT(LSHIFT(Key_L))) \ + OP(L'ŀ', RALT(Key_L)) \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ÿ', RALT(LSHIFT(Key_Y))) /* U+0178, XKB_KEY_Ydiaeresis, LATIN CAPITAL LETTER Y WITH DIAERESIS */ \ + OP(L'ˇ', RALT(Key_1)) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_3))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˛', RALT(LSHIFT(Key_1))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'‑', RALT(LSHIFT(Key_6))) \ + OP(L'–', RALT(LSHIFT(Key_5))) \ + OP(L'—', RALT(LSHIFT(Key_4))) \ + OP(L'‘', RALT(Key_F)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_G)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_F))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_Z))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_X))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_S))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(LSHIFT(Key_M))) \ + OP(L' ', RALT(Key_V)) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'←', RALT(Key_Keypad4)) \ + OP(L'↑', RALT(Key_Keypad8)) \ + OP(L'→', RALT(Key_Keypad6)) \ + OP(L'↓', RALT(Key_B)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'↔', RALT(Key_Keypad5)) \ + OP(L'↕', RALT(Key_Keypad0)) \ + OP(L'↖', RALT(Key_Keypad7)) \ + OP(L'↗', RALT(Key_Keypad9)) \ + OP(L'↘', RALT(Key_Keypad3)) \ + OP(L'↙', RALT(Key_Keypad1)) \ + OP(L'⇐', RALT(LSHIFT(Key_Keypad4))) \ + OP(L'⇑', RALT(LSHIFT(Key_Keypad8))) \ + OP(L'⇒', RALT(LSHIFT(Key_Keypad6))) \ + OP(L'⇓', RALT(LSHIFT(Key_Keypad2))) \ + OP(L'⇔', RALT(LSHIFT(Key_Keypad5))) \ + OP(L'⇕', RALT(LSHIFT(Key_Keypad0))) \ + OP(L'⇖', RALT(LSHIFT(Key_Keypad7))) \ + OP(L'⇗', RALT(LSHIFT(Key_Keypad9))) \ + OP(L'⇘', RALT(LSHIFT(Key_Keypad3))) \ + OP(L'⇙', RALT(LSHIFT(Key_Keypad1))) \ + OP(L'−', RALT(Key_KeypadSubtract)) \ + OP(L'∕', LSHIFT(Key_KeypadDivide)) \ + OP(L'≠', RALT(LSHIFT(Key_Minus))) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'≤', RALT(Key_NonUsBackslashAndPipe)) /* U+2264, XKB_KEY_lessthanequal, LESS-THAN OR EQUAL TO */ \ + OP(L'≥', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+2265, XKB_KEY_greaterthanequal, GREATER-THAN OR EQUAL TO */ \ + OP(L'⋅', LSHIFT(Key_KeypadMultiply)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Agrave, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_H))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Ecircumflex, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Egrave, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Ugrave, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Ydiaeresis, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_acircumflex, RALT(Key_W)) \ + OP(XKB_KEY_acute, RALT(Key_Quote)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ae, RALT(Key_Q)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_LeftBracket) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(Key_1)) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_diaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_division, RALT(Key_Period)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_downarrow, RALT(Key_B)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_ecircumflex, RALT(Key_R)) \ + OP(XKB_KEY_ediaeresis, RALT(Key_D)) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_H)) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_exclamdown, RALT(Key_Slash)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_greaterthanequal, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_idiaeresis, RALT(Key_K)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_F)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lessthanequal, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_multiply, RALT(Key_Comma)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Spacebar))) \ + OP(XKB_KEY_notequal, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_notsign, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, RALT(Key_P)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_Semicolon)) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_onesuperior, RALT(Key_Backtick)) \ + OP(XKB_KEY_oslash, RALT(Key_RightBracket)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_rightarrow, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_G)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threesuperior, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, RALT(Key_U)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_J)) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, Key_8) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_ydiaeresis, RALT(Key_Y)) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fr { +namespace oss_nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace oss_nodeadkeys +} // namespace fr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fr/oss_sundeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/fr/oss_sundeadkeys/keymap.h new file mode 100644 index 0000000000..8f21a65189 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fr/oss_sundeadkeys/keymap.h @@ -0,0 +1,630 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fr +// variant: oss_sundeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_Slash)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_E))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_G))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_N)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_C))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Equals))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', LSHIFT(Key_Backtick)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', LSHIFT(Key_NonUsPound)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¹', RALT(Key_Backtick)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_M)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', RALT(LSHIFT(Key_0))) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Â', RALT(LSHIFT(Key_W))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ä', RALT(LSHIFT(Key_A))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_Q))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_9))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', RALT(LSHIFT(Key_7))) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'É', RALT(LSHIFT(Key_2))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ê', RALT(LSHIFT(Key_R))) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Ë', RALT(LSHIFT(Key_D))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ï', RALT(LSHIFT(Key_K))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_H))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ô', RALT(LSHIFT(Key_P))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', RALT(LSHIFT(Key_Semicolon))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_RightBracket))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ù', RALT(LSHIFT(Key_Quote))) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'Û', RALT(LSHIFT(Key_U))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', RALT(LSHIFT(Key_J))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'â', RALT(Key_W)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_Q)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ê', RALT(Key_R)) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'ë', RALT(Key_D)) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ï', RALT(Key_K)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_H)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ô', RALT(Key_P)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', RALT(Key_Semicolon)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_Period)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_RightBracket)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'û', RALT(Key_U)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', RALT(Key_J)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ÿ', RALT(Key_Y)) /* U+00ff, XKB_KEY_ydiaeresis, LATIN SMALL LETTER Y WITH DIAERESIS */ \ + OP(L'Ŀ', RALT(LSHIFT(Key_L))) \ + OP(L'ŀ', RALT(Key_L)) \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ÿ', RALT(LSHIFT(Key_Y))) /* U+0178, XKB_KEY_Ydiaeresis, LATIN CAPITAL LETTER Y WITH DIAERESIS */ \ + OP(L'‑', RALT(LSHIFT(Key_6))) \ + OP(L'–', RALT(LSHIFT(Key_5))) \ + OP(L'—', RALT(LSHIFT(Key_4))) \ + OP(L'‘', RALT(Key_F)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_G)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_F))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_Z))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_X))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_S))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(LSHIFT(Key_M))) \ + OP(L' ', RALT(Key_V)) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'←', RALT(Key_Keypad4)) \ + OP(L'↑', RALT(Key_Keypad8)) \ + OP(L'→', RALT(Key_Keypad6)) \ + OP(L'↓', RALT(Key_B)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'↔', RALT(Key_Keypad5)) \ + OP(L'↕', RALT(Key_Keypad0)) \ + OP(L'↖', RALT(Key_Keypad7)) \ + OP(L'↗', RALT(Key_Keypad9)) \ + OP(L'↘', RALT(Key_Keypad3)) \ + OP(L'↙', RALT(Key_Keypad1)) \ + OP(L'⇐', RALT(LSHIFT(Key_Keypad4))) \ + OP(L'⇑', RALT(LSHIFT(Key_Keypad8))) \ + OP(L'⇒', RALT(LSHIFT(Key_Keypad6))) \ + OP(L'⇓', RALT(LSHIFT(Key_Keypad2))) \ + OP(L'⇔', RALT(LSHIFT(Key_Keypad5))) \ + OP(L'⇕', RALT(LSHIFT(Key_Keypad0))) \ + OP(L'⇖', RALT(LSHIFT(Key_Keypad7))) \ + OP(L'⇗', RALT(LSHIFT(Key_Keypad9))) \ + OP(L'⇘', RALT(LSHIFT(Key_Keypad3))) \ + OP(L'⇙', RALT(LSHIFT(Key_Keypad1))) \ + OP(L'−', RALT(Key_KeypadSubtract)) \ + OP(L'∕', LSHIFT(Key_KeypadDivide)) \ + OP(L'≠', RALT(LSHIFT(Key_Minus))) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'≤', RALT(Key_NonUsBackslashAndPipe)) /* U+2264, XKB_KEY_lessthanequal, LESS-THAN OR EQUAL TO */ \ + OP(L'≥', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+2265, XKB_KEY_greaterthanequal, GREATER-THAN OR EQUAL TO */ \ + OP(L'⋅', LSHIFT(Key_KeypadMultiply)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Agrave, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_H))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Ecircumflex, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Egrave, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Ugrave, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Ydiaeresis, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_acircumflex, RALT(Key_W)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ae, RALT(Key_Q)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Quote)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_1)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_LeftBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(Key_Period)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_downarrow, RALT(Key_B)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_ecircumflex, RALT(Key_R)) \ + OP(XKB_KEY_ediaeresis, RALT(Key_D)) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_H)) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_exclamdown, RALT(Key_Slash)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_greaterthanequal, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_idiaeresis, RALT(Key_K)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_F)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lessthanequal, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_multiply, RALT(Key_Comma)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Spacebar))) \ + OP(XKB_KEY_notequal, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_notsign, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, RALT(Key_P)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_Semicolon)) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_onesuperior, RALT(Key_Backtick)) \ + OP(XKB_KEY_oslash, RALT(Key_RightBracket)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_rightarrow, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_G)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threesuperior, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, RALT(Key_U)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_J)) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, Key_8) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_ydiaeresis, RALT(Key_Y)) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fr { +namespace oss_sundeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace oss_sundeadkeys +} // namespace fr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fr/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/fr/standard/keymap.h new file mode 100644 index 0000000000..a8d3bd2231 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fr/standard/keymap.h @@ -0,0 +1,582 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fr +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_RightBracket)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_W)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'µ', RALT(Key_Semicolon)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_Semicolon))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_Q))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'æ', RALT(Key_Q)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_A))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_ae, RALT(Key_Q)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_RightBracket)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_M)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_M))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_W)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, RALT(Key_Semicolon)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, Key_8) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fr { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace fr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fr/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/fr/sun_type6/keymap.h new file mode 100644 index 0000000000..321a1f1396 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fr/sun_type6/keymap.h @@ -0,0 +1,466 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fr +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_RightBracket)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'µ', LSHIFT(Key_NonUsPound)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_currency, RALT(Key_RightBracket)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, Key_8) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fr { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace fr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/fr/sundeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/fr/sundeadkeys/keymap.h new file mode 100644 index 0000000000..5ee315ad1f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/fr/sundeadkeys/keymap.h @@ -0,0 +1,582 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: fr +// variant: sundeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_RightBracket)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_W)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'µ', RALT(Key_Semicolon)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_Semicolon))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_Q))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'æ', RALT(Key_Q)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_A))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_ae, RALT(Key_Q)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_RightBracket)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_M)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_M))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_W)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, RALT(Key_Semicolon)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, Key_8) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace fr { +namespace sundeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sundeadkeys +} // namespace fr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/gb/colemak/keymap.h b/src/kaleidoscope/host_keymap/linux/gb/colemak/keymap.h new file mode 100644 index 0000000000..b232723cdb --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/gb/colemak/keymap.h @@ -0,0 +1,517 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: gb +// variant: colemak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_Quote)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_G)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_E)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_T)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_L)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_Y)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_Semicolon)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_S)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_D)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_O)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_G) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_E) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_T) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_L) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_Y) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_Semicolon) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_S) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_D) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_O) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_Quote)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_G)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_E)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_T)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_L)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_Y)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_Semicolon)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_S)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_D)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_O)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_G) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_E) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_T) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_L) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_Y) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_Semicolon) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_S) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_D) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_O) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', LSHIFT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'«', RALT(Key_LeftBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', LSHIFT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_Slash)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'×', RALT(Key_Equals)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'ß', RALT(Key_D)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', RALT(Key_A)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ã', RALT(Key_E)) /* U+00e3, XKB_KEY_atilde, LATIN SMALL LETTER A WITH TILDE */ \ + OP(L'ä', RALT(Key_Q)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', RALT(Key_W)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_Z)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', RALT(Key_K)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', RALT(Key_L)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ð', RALT(Key_7)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', RALT(Key_J)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ó', RALT(Key_Semicolon)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', RALT(Key_P)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ø', RALT(Key_R)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ú', RALT(Key_I)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', RALT(Key_O)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_8)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_Y)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'ħ', RALT(Key_6)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ł', RALT(Key_U)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'œ', RALT(Key_V)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‘', RALT(Key_9)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_0)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_G)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_K)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_E)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_T)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_L)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_Y)) \ + OP(XKB_KEY_K, LSHIFT(Key_N)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_U)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, LSHIFT(Key_RightAlt)) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_J)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_S)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_D)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_F)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_I)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_O)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_A)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_Q)) \ + OP(XKB_KEY_ae, RALT(Key_Z)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_W)) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_atilde, RALT(Key_E)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, RALT(Key_Backtick)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_P)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_G) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Period)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_N)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_F)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_B)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_H)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Comma)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_G)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_S)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(Key_M)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_T)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_dstroke, RALT(Key_Y)) \ + OP(XKB_KEY_e, Key_K) \ + OP(XKB_KEY_eacute, RALT(Key_K)) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_7)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_E) \ + OP(XKB_KEY_g, Key_T) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_6)) \ + OP(XKB_KEY_i, Key_L) \ + OP(XKB_KEY_iacute, RALT(Key_L)) \ + OP(XKB_KEY_j, Key_Y) \ + OP(XKB_KEY_k, Key_N) \ + OP(XKB_KEY_l, Key_U) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_9)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_U)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(Key_Equals)) \ + OP(XKB_KEY_n, Key_J) \ + OP(XKB_KEY_notsign, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_ntilde, RALT(Key_J)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_Semicolon) \ + OP(XKB_KEY_oacute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_P)) \ + OP(XKB_KEY_oe, RALT(Key_V)) \ + OP(XKB_KEY_oslash, RALT(Key_R)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_S) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_0)) \ + OP(XKB_KEY_s, Key_D) \ + OP(XKB_KEY_semicolon, Key_P) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_D)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_3)) \ + OP(XKB_KEY_t, Key_F) \ + OP(XKB_KEY_thorn, RALT(Key_8)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_I) \ + OP(XKB_KEY_uacute, RALT(Key_I)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_O)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_O) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace gb { +namespace colemak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace colemak +} // namespace gb +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/gb/dvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/gb/dvorak/keymap.h new file mode 100644 index 0000000000..0b1016c493 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/gb/dvorak/keymap.h @@ -0,0 +1,494 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: gb +// variant: dvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_W)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_W)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', LSHIFT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¬', LSHIFT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'·', RALT(LSHIFT(Key_E))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'ß', RALT(Key_Semicolon)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', RALT(Key_A)) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'â', RALT(Key_Z)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ä', RALT(Key_W)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'ç', RALT(Key_I)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', RALT(Key_C)) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', RALT(Key_D)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ê', RALT(Key_E)) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'ë', RALT(Key_R)) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'î', RALT(Key_G)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ï', RALT(Key_B)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ô', RALT(Key_S)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', RALT(Key_X)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ù', RALT(Key_V)) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'û', RALT(Key_F)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', RALT(Key_T)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acircumflex, RALT(Key_Z)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_W)) \ + OP(XKB_KEY_agrave, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Q) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_Q)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, RALT(Key_Backtick)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, Key_Minus) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_ccedilla, RALT(Key_I)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Z)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_I))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Q)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_W))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_R))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Q))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Z))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_9)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_X))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_eacute, RALT(Key_D)) \ + OP(XKB_KEY_ecircumflex, RALT(Key_E)) \ + OP(XKB_KEY_ediaeresis, RALT(Key_R)) \ + OP(XKB_KEY_egrave, RALT(Key_C)) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_icircumflex, RALT(Key_G)) \ + OP(XKB_KEY_idiaeresis, RALT(Key_B)) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_less, LSHIFT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_notsign, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_ocircumflex, RALT(Key_S)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_X)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_plus, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_semicolon, Key_Z) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Semicolon)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_3)) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_ucircumflex, RALT(Key_F)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_T)) \ + OP(XKB_KEY_ugrave, RALT(Key_V)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace gb { +namespace dvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak +} // namespace gb +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/gb/dvorakukp/keymap.h b/src/kaleidoscope/host_keymap/linux/gb/dvorakukp/keymap.h new file mode 100644 index 0000000000..90ba47d407 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/gb/dvorakukp/keymap.h @@ -0,0 +1,494 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: gb +// variant: dvorakukp + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Q) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_W)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Q)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_Quote)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Q) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_W)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Q)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_Quote)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', LSHIFT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¬', LSHIFT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'·', RALT(LSHIFT(Key_E))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'ß', RALT(Key_Semicolon)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', RALT(Key_A)) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'â', RALT(Key_Z)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ä', RALT(Key_W)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'ç', RALT(Key_I)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', RALT(Key_C)) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', RALT(Key_D)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ê', RALT(Key_E)) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'ë', RALT(Key_R)) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'î', RALT(Key_G)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ï', RALT(Key_B)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ô', RALT(Key_S)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', RALT(Key_X)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ù', RALT(Key_V)) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'û', RALT(Key_F)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', RALT(Key_T)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acircumflex, RALT(Key_Z)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_W)) \ + OP(XKB_KEY_agrave, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, RALT(Key_Backtick)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_ccedilla, RALT(Key_I)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Z)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_I))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Q)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_W))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_R))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Q))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Z))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_9)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_X))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_eacute, RALT(Key_D)) \ + OP(XKB_KEY_ecircumflex, RALT(Key_E)) \ + OP(XKB_KEY_ediaeresis, RALT(Key_R)) \ + OP(XKB_KEY_egrave, RALT(Key_C)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_icircumflex, RALT(Key_G)) \ + OP(XKB_KEY_idiaeresis, RALT(Key_B)) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_less, LSHIFT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_notsign, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_ocircumflex, RALT(Key_S)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_X)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_Q)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_semicolon, Key_Z) \ + OP(XKB_KEY_slash, Key_Q) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Semicolon)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_3)) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_ucircumflex, RALT(Key_F)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_T)) \ + OP(XKB_KEY_ugrave, RALT(Key_V)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace gb { +namespace dvorakukp { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorakukp +} // namespace gb +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/gb/extd/keymap.h b/src/kaleidoscope/host_keymap/linux/gb/extd/keymap.h new file mode 100644 index 0000000000..dbf9da1026 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/gb/extd/keymap.h @@ -0,0 +1,581 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: gb +// variant: extd + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', LSHIFT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(Key_Backtick)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', LSHIFT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_A))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'É', RALT(LSHIFT(Key_E))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(LSHIFT(Key_I))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', RALT(LSHIFT(Key_O))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ú', RALT(LSHIFT(Key_U))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ý', RALT(LSHIFT(Key_Y))) /* U+00dd, XKB_KEY_Yacute, LATIN CAPITAL LETTER Y WITH ACUTE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', RALT(Key_A)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', RALT(Key_E)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', RALT(Key_I)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ó', RALT(Key_O)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ú', RALT(Key_U)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ý', RALT(Key_Y)) /* U+00fd, XKB_KEY_yacute, LATIN SMALL LETTER Y WITH ACUTE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'Ẃ', RALT(LSHIFT(Key_W))) /* U+1e82, XKB_KEY_Wacute, LATIN CAPITAL LETTER W WITH ACUTE */ \ + OP(L'ẃ', RALT(Key_W)) /* U+1e83, XKB_KEY_wacute, LATIN SMALL LETTER W WITH ACUTE */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅓', RALT(LSHIFT(Key_3))) /* U+2153, XKB_KEY_onethird, VULGAR FRACTION ONE THIRD */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_Wacute, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Yacute, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(Key_Backtick)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_2)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_Backtick) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, RALT(Key_E)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, RALT(Key_O)) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_onethird, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_wacute, RALT(Key_W)) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yacute, RALT(Key_Y)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace gb { +namespace extd { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace extd +} // namespace gb +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/gb/intl/keymap.h b/src/kaleidoscope/host_keymap/linux/gb/intl/keymap.h new file mode 100644 index 0000000000..fda0cbe633 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/gb/intl/keymap.h @@ -0,0 +1,564 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: gb +// variant: intl + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', LSHIFT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅓', RALT(LSHIFT(Key_3))) /* U+2153, XKB_KEY_onethird, VULGAR FRACTION ONE THIRD */ \ + OP(L'⅙', RALT(LSHIFT(Key_6))) /* U+2159, XKB_KEY_onesixth, VULGAR FRACTION ONE SIXTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, RALT(Key_Backtick)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_2)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_Backtick) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesixth, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_onethird, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace gb { +namespace intl { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace intl +} // namespace gb +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/gb/mac/keymap.h b/src/kaleidoscope/host_keymap/linux/gb/mac/keymap.h new file mode 100644 index 0000000000..65ef8717de --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/gb/mac/keymap.h @@ -0,0 +1,575 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: gb +// variant: mac + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_NonUsBackslashAndPipe) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_NonUsBackslashAndPipe) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', LSHIFT(Key_Backtick)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_2)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_2)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_KeypadEnter) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_NonUsBackslashAndPipe) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace gb { +namespace mac { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mac +} // namespace gb +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/gb/mac_intl/keymap.h b/src/kaleidoscope/host_keymap/linux/gb/mac_intl/keymap.h new file mode 100644 index 0000000000..65e050e9ab --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/gb/mac_intl/keymap.h @@ -0,0 +1,563 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: gb +// variant: mac_intl + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('#', RALT(Key_NonUsPound)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'#', RALT(Key_NonUsPound)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', LSHIFT(Key_Backtick)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_3)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_4)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_2)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅓', RALT(LSHIFT(Key_3))) /* U+2153, XKB_KEY_onethird, VULGAR FRACTION ONE THIRD */ \ + OP(L'⅙', RALT(LSHIFT(Key_6))) /* U+2159, XKB_KEY_onesixth, VULGAR FRACTION ONE SIXTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_2)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_NonUsBackslashAndPipe) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesixth, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_onethird, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_4)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_3)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace gb { +namespace mac_intl { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mac_intl +} // namespace gb +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/gb/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/gb/standard/keymap.h new file mode 100644 index 0000000000..7b6302e586 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/gb/standard/keymap.h @@ -0,0 +1,509 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: gb +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', LSHIFT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, LSHIFT(Key_RightAlt)) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, RALT(Key_Backtick)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace gb { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace gb +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/gb/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/gb/sun_type6/keymap.h new file mode 100644 index 0000000000..188db33053 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/gb/sun_type6/keymap.h @@ -0,0 +1,446 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: gb +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_Quote)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_Quote)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', LSHIFT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(Key_Backtick)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¬', LSHIFT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(Key_Backtick)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, LSHIFT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace gb { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace gb +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ge/ergonomic/keymap.h b/src/kaleidoscope/host_keymap/linux/ge/ergonomic/keymap.h new file mode 100644 index 0000000000..035d3369f7 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ge/ergonomic/keymap.h @@ -0,0 +1,440 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ge +// variant: ergonomic + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_1) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', Key_5) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_Backtick)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_9) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_0) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_3) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_8) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsPound) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_6) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_4) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', RALT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', Key_7) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', RALT(LSHIFT(Key_C))) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', RALT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', RALT(LSHIFT(Key_Minus))) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_1) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', Key_5) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_Backtick)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_9) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_0) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_3) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_8) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsPound) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_6) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_4) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', RALT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', Key_7) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', RALT(LSHIFT(Key_C))) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', RALT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', RALT(LSHIFT(Key_Minus))) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_NonUsPound)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'«', Key_NonUsBackslashAndPipe) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(Key_R)) \ + OP(L'°', RALT(LSHIFT(Key_8))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'»', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'ა', Key_D) /* U+10d0, XKB_KEY_Georgian_an, GEORGIAN LETTER AN */ \ + OP(L'ბ', Key_Semicolon) /* U+10d1, XKB_KEY_Georgian_ban, GEORGIAN LETTER BAN */ \ + OP(L'გ', Key_Quote) /* U+10d2, XKB_KEY_Georgian_gan, GEORGIAN LETTER GAN */ \ + OP(L'დ', Key_H) /* U+10d3, XKB_KEY_Georgian_don, GEORGIAN LETTER DON */ \ + OP(L'ე', Key_F) /* U+10d4, XKB_KEY_Georgian_en, GEORGIAN LETTER EN */ \ + OP(L'ვ', Key_O) /* U+10d5, XKB_KEY_Georgian_vin, GEORGIAN LETTER VIN */ \ + OP(L'ზ', Key_N) /* U+10d6, XKB_KEY_Georgian_zen, GEORGIAN LETTER ZEN */ \ + OP(L'თ', Key_U) /* U+10d7, XKB_KEY_Georgian_tan, GEORGIAN LETTER TAN */ \ + OP(L'ი', Key_S) /* U+10d8, XKB_KEY_Georgian_in, GEORGIAN LETTER IN */ \ + OP(L'კ', Key_LeftBracket) /* U+10d9, XKB_KEY_Georgian_kan, GEORGIAN LETTER KAN */ \ + OP(L'ლ', Key_Comma) /* U+10da, XKB_KEY_Georgian_las, GEORGIAN LETTER LAS */ \ + OP(L'მ', Key_J) /* U+10db, XKB_KEY_Georgian_man, GEORGIAN LETTER MAN */ \ + OP(L'ნ', Key_I) /* U+10dc, XKB_KEY_Georgian_nar, GEORGIAN LETTER NAR */ \ + OP(L'ო', Key_G) /* U+10dd, XKB_KEY_Georgian_on, GEORGIAN LETTER ON */ \ + OP(L'პ', Key_W) /* U+10de, XKB_KEY_Georgian_par, GEORGIAN LETTER PAR */ \ + OP(L'ჟ', Key_B) /* U+10df, XKB_KEY_Georgian_zhar, GEORGIAN LETTER ZHAR */ \ + OP(L'რ', Key_L) /* U+10e0, XKB_KEY_Georgian_rae, GEORGIAN LETTER RAE */ \ + OP(L'ს', Key_K) /* U+10e1, XKB_KEY_Georgian_san, GEORGIAN LETTER SAN */ \ + OP(L'ტ', Key_Y) /* U+10e2, XKB_KEY_Georgian_tar, GEORGIAN LETTER TAR */ \ + OP(L'უ', Key_E) /* U+10e3, XKB_KEY_Georgian_un, GEORGIAN LETTER UN */ \ + OP(L'ფ', Key_Period) /* U+10e4, XKB_KEY_Georgian_phar, GEORGIAN LETTER PHAR */ \ + OP(L'ქ', Key_RightBracket) /* U+10e5, XKB_KEY_Georgian_khar, GEORGIAN LETTER KHAR */ \ + OP(L'ღ', Key_V) /* U+10e6, XKB_KEY_Georgian_ghan, GEORGIAN LETTER GHAN */ \ + OP(L'ყ', Key_C) /* U+10e7, XKB_KEY_Georgian_qar, GEORGIAN LETTER QAR */ \ + OP(L'შ', Key_P) /* U+10e8, XKB_KEY_Georgian_shin, GEORGIAN LETTER SHIN */ \ + OP(L'ჩ', Key_Q) /* U+10e9, XKB_KEY_Georgian_chin, GEORGIAN LETTER CHIN */ \ + OP(L'ც', Key_M) /* U+10ea, XKB_KEY_Georgian_can, GEORGIAN LETTER CAN */ \ + OP(L'ძ', Key_R) /* U+10eb, XKB_KEY_Georgian_jil, GEORGIAN LETTER JIL */ \ + OP(L'წ', Key_Slash) /* U+10ec, XKB_KEY_Georgian_cil, GEORGIAN LETTER CIL */ \ + OP(L'ჭ', Key_T) /* U+10ed, XKB_KEY_Georgian_char, GEORGIAN LETTER CHAR */ \ + OP(L'ხ', Key_A) /* U+10ee, XKB_KEY_Georgian_xan, GEORGIAN LETTER XAN */ \ + OP(L'ჯ', Key_Z) /* U+10ef, XKB_KEY_Georgian_jhan, GEORGIAN LETTER JHAN */ \ + OP(L'ჰ', Key_X) /* U+10f0, XKB_KEY_Georgian_hae, GEORGIAN LETTER HAE */ \ + OP(L'ჱ', RALT(Key_E)) /* U+10f1, XKB_KEY_Georgian_he, GEORGIAN LETTER HE */ \ + OP(L'ჲ', RALT(Key_S)) /* U+10f2, XKB_KEY_Georgian_hie, GEORGIAN LETTER HIE */ \ + OP(L'ჳ', RALT(Key_O)) /* U+10f3, XKB_KEY_Georgian_we, GEORGIAN LETTER WE */ \ + OP(L'ჴ', RALT(Key_A)) /* U+10f4, XKB_KEY_Georgian_har, GEORGIAN LETTER HAR */ \ + OP(L'ჵ', RALT(Key_H)) /* U+10f5, XKB_KEY_Georgian_hoe, GEORGIAN LETTER HOE */ \ + OP(L'ჶ', RALT(Key_Period)) /* U+10f6, XKB_KEY_Georgian_fi, GEORGIAN LETTER FI */ \ + OP(L'ჷ', RALT(Key_J)) \ + OP(L'ჸ', RALT(Key_Y)) \ + OP(L'ჹ', RALT(Key_G)) \ + OP(L'ჺ', RALT(Key_D)) \ + OP(L'჻', RALT(Key_Slash)) \ + OP(L'ჼ', RALT(Key_I)) \ + OP(L'—', RALT(Key_Minus)) \ + OP(L'“', Key_Equals) \ + OP(L'„', Key_Backtick) \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'№', Key_2) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Georgian_an, Key_D) \ + OP(XKB_KEY_Georgian_ban, Key_Semicolon) \ + OP(XKB_KEY_Georgian_can, Key_M) \ + OP(XKB_KEY_Georgian_char, Key_T) \ + OP(XKB_KEY_Georgian_chin, Key_Q) \ + OP(XKB_KEY_Georgian_cil, Key_Slash) \ + OP(XKB_KEY_Georgian_don, Key_H) \ + OP(XKB_KEY_Georgian_en, Key_F) \ + OP(XKB_KEY_Georgian_fi, RALT(Key_Period)) \ + OP(XKB_KEY_Georgian_gan, Key_Quote) \ + OP(XKB_KEY_Georgian_ghan, Key_V) \ + OP(XKB_KEY_Georgian_hae, Key_X) \ + OP(XKB_KEY_Georgian_har, RALT(Key_A)) \ + OP(XKB_KEY_Georgian_he, RALT(Key_E)) \ + OP(XKB_KEY_Georgian_hie, RALT(Key_S)) \ + OP(XKB_KEY_Georgian_hoe, RALT(Key_H)) \ + OP(XKB_KEY_Georgian_in, Key_S) \ + OP(XKB_KEY_Georgian_jhan, Key_Z) \ + OP(XKB_KEY_Georgian_jil, Key_R) \ + OP(XKB_KEY_Georgian_kan, Key_LeftBracket) \ + OP(XKB_KEY_Georgian_khar, Key_RightBracket) \ + OP(XKB_KEY_Georgian_las, Key_Comma) \ + OP(XKB_KEY_Georgian_man, Key_J) \ + OP(XKB_KEY_Georgian_nar, Key_I) \ + OP(XKB_KEY_Georgian_on, Key_G) \ + OP(XKB_KEY_Georgian_par, Key_W) \ + OP(XKB_KEY_Georgian_phar, Key_Period) \ + OP(XKB_KEY_Georgian_qar, Key_C) \ + OP(XKB_KEY_Georgian_rae, Key_L) \ + OP(XKB_KEY_Georgian_san, Key_K) \ + OP(XKB_KEY_Georgian_shin, Key_P) \ + OP(XKB_KEY_Georgian_tan, Key_U) \ + OP(XKB_KEY_Georgian_tar, Key_Y) \ + OP(XKB_KEY_Georgian_un, Key_E) \ + OP(XKB_KEY_Georgian_vin, Key_O) \ + OP(XKB_KEY_Georgian_we, RALT(Key_O)) \ + OP(XKB_KEY_Georgian_xan, Key_A) \ + OP(XKB_KEY_Georgian_zen, Key_N) \ + OP(XKB_KEY_Georgian_zhar, Key_B) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, RALT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_ampersand, RALT(Key_7)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_Backtick)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, RALT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, Key_6) \ + OP(XKB_KEY_comma, Key_3) \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_equal, RALT(Key_Equals)) \ + OP(XKB_KEY_exclam, Key_1) \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_parenleft, Key_9) \ + OP(XKB_KEY_parenright, Key_0) \ + OP(XKB_KEY_percent, Key_5) \ + OP(XKB_KEY_period, Key_8) \ + OP(XKB_KEY_plus, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_question, Key_7) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_section, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_semicolon, Key_4) \ + OP(XKB_KEY_slash, Key_NonUsPound) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, RALT(LSHIFT(Key_Minus))) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ge { +namespace ergonomic { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ergonomic +} // namespace ge +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ge/mess/keymap.h b/src/kaleidoscope/host_keymap/linux/ge/mess/keymap.h new file mode 100644 index 0000000000..41c756f26a --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ge/mess/keymap.h @@ -0,0 +1,454 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ge +// variant: mess + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_NonUsPound) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', LSHIFT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', LSHIFT(Key_Backtick)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_NonUsPound) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', LSHIFT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', LSHIFT(Key_Backtick)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_7)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) \ + OP(L'«', Key_NonUsBackslashAndPipe) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(Key_R)) \ + OP(L'°', RALT(Key_8)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'ა', Key_A) /* U+10d0, XKB_KEY_Georgian_an, GEORGIAN LETTER AN */ \ + OP(L'ბ', Key_B) /* U+10d1, XKB_KEY_Georgian_ban, GEORGIAN LETTER BAN */ \ + OP(L'გ', Key_G) /* U+10d2, XKB_KEY_Georgian_gan, GEORGIAN LETTER GAN */ \ + OP(L'დ', Key_D) /* U+10d3, XKB_KEY_Georgian_don, GEORGIAN LETTER DON */ \ + OP(L'ე', Key_E) /* U+10d4, XKB_KEY_Georgian_en, GEORGIAN LETTER EN */ \ + OP(L'ვ', Key_V) /* U+10d5, XKB_KEY_Georgian_vin, GEORGIAN LETTER VIN */ \ + OP(L'ზ', Key_Z) /* U+10d6, XKB_KEY_Georgian_zen, GEORGIAN LETTER ZEN */ \ + OP(L'თ', Key_Semicolon) /* U+10d7, XKB_KEY_Georgian_tan, GEORGIAN LETTER TAN */ \ + OP(L'ი', Key_I) /* U+10d8, XKB_KEY_Georgian_in, GEORGIAN LETTER IN */ \ + OP(L'კ', Key_K) /* U+10d9, XKB_KEY_Georgian_kan, GEORGIAN LETTER KAN */ \ + OP(L'ლ', Key_L) /* U+10da, XKB_KEY_Georgian_las, GEORGIAN LETTER LAS */ \ + OP(L'მ', Key_M) /* U+10db, XKB_KEY_Georgian_man, GEORGIAN LETTER MAN */ \ + OP(L'ნ', Key_N) /* U+10dc, XKB_KEY_Georgian_nar, GEORGIAN LETTER NAR */ \ + OP(L'ო', Key_O) /* U+10dd, XKB_KEY_Georgian_on, GEORGIAN LETTER ON */ \ + OP(L'პ', Key_P) /* U+10de, XKB_KEY_Georgian_par, GEORGIAN LETTER PAR */ \ + OP(L'ჟ', Key_Equals) /* U+10df, XKB_KEY_Georgian_zhar, GEORGIAN LETTER ZHAR */ \ + OP(L'რ', Key_R) /* U+10e0, XKB_KEY_Georgian_rae, GEORGIAN LETTER RAE */ \ + OP(L'ს', Key_S) /* U+10e1, XKB_KEY_Georgian_san, GEORGIAN LETTER SAN */ \ + OP(L'ტ', Key_T) /* U+10e2, XKB_KEY_Georgian_tar, GEORGIAN LETTER TAR */ \ + OP(L'უ', Key_U) /* U+10e3, XKB_KEY_Georgian_un, GEORGIAN LETTER UN */ \ + OP(L'ფ', Key_F) /* U+10e4, XKB_KEY_Georgian_phar, GEORGIAN LETTER PHAR */ \ + OP(L'ქ', Key_Q) /* U+10e5, XKB_KEY_Georgian_khar, GEORGIAN LETTER KHAR */ \ + OP(L'ღ', Key_RightBracket) /* U+10e6, XKB_KEY_Georgian_ghan, GEORGIAN LETTER GHAN */ \ + OP(L'ყ', Key_Y) /* U+10e7, XKB_KEY_Georgian_qar, GEORGIAN LETTER QAR */ \ + OP(L'შ', Key_LeftBracket) /* U+10e8, XKB_KEY_Georgian_shin, GEORGIAN LETTER SHIN */ \ + OP(L'ჩ', Key_Quote) /* U+10e9, XKB_KEY_Georgian_chin, GEORGIAN LETTER CHIN */ \ + OP(L'ც', Key_C) /* U+10ea, XKB_KEY_Georgian_can, GEORGIAN LETTER CAN */ \ + OP(L'ძ', Key_Slash) /* U+10eb, XKB_KEY_Georgian_jil, GEORGIAN LETTER JIL */ \ + OP(L'წ', Key_W) /* U+10ec, XKB_KEY_Georgian_cil, GEORGIAN LETTER CIL */ \ + OP(L'ჭ', Key_Backtick) /* U+10ed, XKB_KEY_Georgian_char, GEORGIAN LETTER CHAR */ \ + OP(L'ხ', Key_X) /* U+10ee, XKB_KEY_Georgian_xan, GEORGIAN LETTER XAN */ \ + OP(L'ჯ', Key_J) /* U+10ef, XKB_KEY_Georgian_jhan, GEORGIAN LETTER JHAN */ \ + OP(L'ჰ', Key_H) /* U+10f0, XKB_KEY_Georgian_hae, GEORGIAN LETTER HAE */ \ + OP(L'ჱ', RALT(Key_E)) /* U+10f1, XKB_KEY_Georgian_he, GEORGIAN LETTER HE */ \ + OP(L'ჲ', RALT(Key_I)) /* U+10f2, XKB_KEY_Georgian_hie, GEORGIAN LETTER HIE */ \ + OP(L'ჳ', RALT(Key_V)) /* U+10f3, XKB_KEY_Georgian_we, GEORGIAN LETTER WE */ \ + OP(L'ჴ', RALT(Key_X)) /* U+10f4, XKB_KEY_Georgian_har, GEORGIAN LETTER HAR */ \ + OP(L'ჵ', RALT(Key_Z)) /* U+10f5, XKB_KEY_Georgian_hoe, GEORGIAN LETTER HOE */ \ + OP(L'ჶ', RALT(Key_F)) /* U+10f6, XKB_KEY_Georgian_fi, GEORGIAN LETTER FI */ \ + OP(L'ჷ', RALT(Key_J)) \ + OP(L'ჸ', RALT(Key_Y)) \ + OP(L'ჹ', RALT(Key_G)) \ + OP(L'ჺ', RALT(Key_A)) \ + OP(L'჻', RALT(Key_Slash)) \ + OP(L'ჼ', RALT(Key_N)) \ + OP(L'–', RALT(Key_Minus)) \ + OP(L'—', RALT(Key_0)) \ + OP(L'“', LSHIFT(Key_Quote)) \ + OP(L'„', LSHIFT(Key_Semicolon)) \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'№', LSHIFT(Key_3)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Georgian_an, Key_A) \ + OP(XKB_KEY_Georgian_ban, Key_B) \ + OP(XKB_KEY_Georgian_can, Key_C) \ + OP(XKB_KEY_Georgian_char, Key_Backtick) \ + OP(XKB_KEY_Georgian_chin, Key_Quote) \ + OP(XKB_KEY_Georgian_cil, Key_W) \ + OP(XKB_KEY_Georgian_don, Key_D) \ + OP(XKB_KEY_Georgian_en, Key_E) \ + OP(XKB_KEY_Georgian_fi, RALT(Key_F)) \ + OP(XKB_KEY_Georgian_gan, Key_G) \ + OP(XKB_KEY_Georgian_ghan, Key_RightBracket) \ + OP(XKB_KEY_Georgian_hae, Key_H) \ + OP(XKB_KEY_Georgian_har, RALT(Key_X)) \ + OP(XKB_KEY_Georgian_he, RALT(Key_E)) \ + OP(XKB_KEY_Georgian_hie, RALT(Key_I)) \ + OP(XKB_KEY_Georgian_hoe, RALT(Key_Z)) \ + OP(XKB_KEY_Georgian_in, Key_I) \ + OP(XKB_KEY_Georgian_jhan, Key_J) \ + OP(XKB_KEY_Georgian_jil, Key_Slash) \ + OP(XKB_KEY_Georgian_kan, Key_K) \ + OP(XKB_KEY_Georgian_khar, Key_Q) \ + OP(XKB_KEY_Georgian_las, Key_L) \ + OP(XKB_KEY_Georgian_man, Key_M) \ + OP(XKB_KEY_Georgian_nar, Key_N) \ + OP(XKB_KEY_Georgian_on, Key_O) \ + OP(XKB_KEY_Georgian_par, Key_P) \ + OP(XKB_KEY_Georgian_phar, Key_F) \ + OP(XKB_KEY_Georgian_qar, Key_Y) \ + OP(XKB_KEY_Georgian_rae, Key_R) \ + OP(XKB_KEY_Georgian_san, Key_S) \ + OP(XKB_KEY_Georgian_shin, Key_LeftBracket) \ + OP(XKB_KEY_Georgian_tan, Key_Semicolon) \ + OP(XKB_KEY_Georgian_tar, Key_T) \ + OP(XKB_KEY_Georgian_un, Key_U) \ + OP(XKB_KEY_Georgian_vin, Key_V) \ + OP(XKB_KEY_Georgian_we, RALT(Key_V)) \ + OP(XKB_KEY_Georgian_xan, Key_X) \ + OP(XKB_KEY_Georgian_zen, Key_Z) \ + OP(XKB_KEY_Georgian_zhar, Key_Equals) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_1)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_bar, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_degree, RALT(Key_8)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_NonUsPound) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_less, RALT(Key_Comma)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_section, RALT(Key_7)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ge { +namespace mess { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mess +} // namespace ge +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ge/os/keymap.h b/src/kaleidoscope/host_keymap/linux/ge/os/keymap.h new file mode 100644 index 0000000000..d48b69c2d5 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ge/os/keymap.h @@ -0,0 +1,371 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ge +// variant: os + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_6)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_7)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_5)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_8)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_6)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_7)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_5)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_8)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Backtick)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Backtick) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'Ӕ', LSHIFT(Key_Quote)) \ + OP(L'ӕ', Key_Quote) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_4)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_colon, LSHIFT(Key_5)) \ + OP(XKB_KEY_comma, LSHIFT(Key_6)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_period, LSHIFT(Key_7)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_8)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ge { +namespace os { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace os +} // namespace ge +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ge/ru/keymap.h b/src/kaleidoscope/host_keymap/linux/ge/ru/keymap.h new file mode 100644 index 0000000000..1736b84cee --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ge/ru/keymap.h @@ -0,0 +1,405 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ge +// variant: ru + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('#', Key_Equals) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_6)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_7)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_5)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', LSHIFT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', LSHIFT(Key_A)) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', LSHIFT(Key_B)) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', LSHIFT(Key_C)) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', LSHIFT(Key_D)) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', LSHIFT(Key_E)) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', LSHIFT(Key_F)) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', LSHIFT(Key_G)) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', LSHIFT(Key_H)) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', LSHIFT(Key_I)) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', LSHIFT(Key_J)) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', LSHIFT(Key_K)) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', LSHIFT(Key_L)) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', LSHIFT(Key_M)) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', LSHIFT(Key_N)) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', LSHIFT(Key_O)) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', LSHIFT(Key_P)) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', LSHIFT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', LSHIFT(Key_R)) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', LSHIFT(Key_S)) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', LSHIFT(Key_T)) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', LSHIFT(Key_U)) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', LSHIFT(Key_V)) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', LSHIFT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', LSHIFT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', LSHIFT(Key_Y)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', LSHIFT(Key_Z)) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('|', LSHIFT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'#', Key_Equals) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_6)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_7)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_5)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', LSHIFT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', LSHIFT(Key_A)) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', LSHIFT(Key_B)) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', LSHIFT(Key_C)) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', LSHIFT(Key_D)) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', LSHIFT(Key_E)) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', LSHIFT(Key_F)) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', LSHIFT(Key_G)) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', LSHIFT(Key_H)) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', LSHIFT(Key_I)) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', LSHIFT(Key_J)) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', LSHIFT(Key_K)) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', LSHIFT(Key_L)) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', LSHIFT(Key_M)) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', LSHIFT(Key_N)) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', LSHIFT(Key_O)) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', LSHIFT(Key_P)) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', LSHIFT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', LSHIFT(Key_R)) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', LSHIFT(Key_S)) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', LSHIFT(Key_T)) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', LSHIFT(Key_U)) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', LSHIFT(Key_V)) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', LSHIFT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', LSHIFT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', LSHIFT(Key_Y)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', LSHIFT(Key_Z)) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'|', LSHIFT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'«', Key_NonUsBackslashAndPipe) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'ა', Key_F) /* U+10d0, XKB_KEY_Georgian_an, GEORGIAN LETTER AN */ \ + OP(L'ბ', Key_Comma) /* U+10d1, XKB_KEY_Georgian_ban, GEORGIAN LETTER BAN */ \ + OP(L'გ', Key_U) /* U+10d2, XKB_KEY_Georgian_gan, GEORGIAN LETTER GAN */ \ + OP(L'დ', Key_L) /* U+10d3, XKB_KEY_Georgian_don, GEORGIAN LETTER DON */ \ + OP(L'ე', Key_T) /* U+10d4, XKB_KEY_Georgian_en, GEORGIAN LETTER EN */ \ + OP(L'ვ', Key_D) /* U+10d5, XKB_KEY_Georgian_vin, GEORGIAN LETTER VIN */ \ + OP(L'ზ', Key_P) /* U+10d6, XKB_KEY_Georgian_zen, GEORGIAN LETTER ZEN */ \ + OP(L'თ', Key_S) /* U+10d7, XKB_KEY_Georgian_tan, GEORGIAN LETTER TAN */ \ + OP(L'ი', Key_B) /* U+10d8, XKB_KEY_Georgian_in, GEORGIAN LETTER IN */ \ + OP(L'კ', Key_R) /* U+10d9, XKB_KEY_Georgian_kan, GEORGIAN LETTER KAN */ \ + OP(L'ლ', Key_K) /* U+10da, XKB_KEY_Georgian_las, GEORGIAN LETTER LAS */ \ + OP(L'მ', Key_V) /* U+10db, XKB_KEY_Georgian_man, GEORGIAN LETTER MAN */ \ + OP(L'ნ', Key_Y) /* U+10dc, XKB_KEY_Georgian_nar, GEORGIAN LETTER NAR */ \ + OP(L'ო', Key_J) /* U+10dd, XKB_KEY_Georgian_on, GEORGIAN LETTER ON */ \ + OP(L'პ', Key_G) /* U+10de, XKB_KEY_Georgian_par, GEORGIAN LETTER PAR */ \ + OP(L'ჟ', Key_Semicolon) /* U+10df, XKB_KEY_Georgian_zhar, GEORGIAN LETTER ZHAR */ \ + OP(L'რ', Key_H) /* U+10e0, XKB_KEY_Georgian_rae, GEORGIAN LETTER RAE */ \ + OP(L'ს', Key_C) /* U+10e1, XKB_KEY_Georgian_san, GEORGIAN LETTER SAN */ \ + OP(L'ტ', Key_N) /* U+10e2, XKB_KEY_Georgian_tar, GEORGIAN LETTER TAR */ \ + OP(L'უ', Key_E) /* U+10e3, XKB_KEY_Georgian_un, GEORGIAN LETTER UN */ \ + OP(L'ფ', Key_A) /* U+10e4, XKB_KEY_Georgian_phar, GEORGIAN LETTER PHAR */ \ + OP(L'ქ', Key_M) /* U+10e5, XKB_KEY_Georgian_khar, GEORGIAN LETTER KHAR */ \ + OP(L'ღ', Key_Q) /* U+10e6, XKB_KEY_Georgian_ghan, GEORGIAN LETTER GHAN */ \ + OP(L'ყ', Key_Period) /* U+10e7, XKB_KEY_Georgian_qar, GEORGIAN LETTER QAR */ \ + OP(L'შ', Key_I) /* U+10e8, XKB_KEY_Georgian_shin, GEORGIAN LETTER SHIN */ \ + OP(L'ჩ', Key_X) /* U+10e9, XKB_KEY_Georgian_chin, GEORGIAN LETTER CHIN */ \ + OP(L'ც', Key_W) /* U+10ea, XKB_KEY_Georgian_can, GEORGIAN LETTER CAN */ \ + OP(L'ძ', Key_Quote) /* U+10eb, XKB_KEY_Georgian_jil, GEORGIAN LETTER JIL */ \ + OP(L'წ', Key_O) /* U+10ec, XKB_KEY_Georgian_cil, GEORGIAN LETTER CIL */ \ + OP(L'ჭ', Key_Z) /* U+10ed, XKB_KEY_Georgian_char, GEORGIAN LETTER CHAR */ \ + OP(L'ხ', Key_LeftBracket) /* U+10ee, XKB_KEY_Georgian_xan, GEORGIAN LETTER XAN */ \ + OP(L'ჯ', Key_RightBracket) /* U+10ef, XKB_KEY_Georgian_jhan, GEORGIAN LETTER JHAN */ \ + OP(L'ჰ', Key_Slash) /* U+10f0, XKB_KEY_Georgian_hae, GEORGIAN LETTER HAE */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Georgian_an, Key_F) \ + OP(XKB_KEY_Georgian_ban, Key_Comma) \ + OP(XKB_KEY_Georgian_can, Key_W) \ + OP(XKB_KEY_Georgian_char, Key_Z) \ + OP(XKB_KEY_Georgian_chin, Key_X) \ + OP(XKB_KEY_Georgian_cil, Key_O) \ + OP(XKB_KEY_Georgian_don, Key_L) \ + OP(XKB_KEY_Georgian_en, Key_T) \ + OP(XKB_KEY_Georgian_gan, Key_U) \ + OP(XKB_KEY_Georgian_ghan, Key_Q) \ + OP(XKB_KEY_Georgian_hae, Key_Slash) \ + OP(XKB_KEY_Georgian_in, Key_B) \ + OP(XKB_KEY_Georgian_jhan, Key_RightBracket) \ + OP(XKB_KEY_Georgian_jil, Key_Quote) \ + OP(XKB_KEY_Georgian_kan, Key_R) \ + OP(XKB_KEY_Georgian_khar, Key_M) \ + OP(XKB_KEY_Georgian_las, Key_K) \ + OP(XKB_KEY_Georgian_man, Key_V) \ + OP(XKB_KEY_Georgian_nar, Key_Y) \ + OP(XKB_KEY_Georgian_on, Key_J) \ + OP(XKB_KEY_Georgian_par, Key_G) \ + OP(XKB_KEY_Georgian_phar, Key_A) \ + OP(XKB_KEY_Georgian_qar, Key_Period) \ + OP(XKB_KEY_Georgian_rae, Key_H) \ + OP(XKB_KEY_Georgian_san, Key_C) \ + OP(XKB_KEY_Georgian_shin, Key_I) \ + OP(XKB_KEY_Georgian_tan, Key_S) \ + OP(XKB_KEY_Georgian_tar, Key_N) \ + OP(XKB_KEY_Georgian_un, Key_E) \ + OP(XKB_KEY_Georgian_vin, Key_D) \ + OP(XKB_KEY_Georgian_xan, Key_LeftBracket) \ + OP(XKB_KEY_Georgian_zen, Key_P) \ + OP(XKB_KEY_Georgian_zhar, Key_Semicolon) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_a, LSHIFT(Key_A)) \ + OP(XKB_KEY_asciicircum, Key_Backtick) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, LSHIFT(Key_B)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_c, LSHIFT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_5)) \ + OP(XKB_KEY_comma, LSHIFT(Key_6)) \ + OP(XKB_KEY_d, LSHIFT(Key_D)) \ + OP(XKB_KEY_e, LSHIFT(Key_E)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, LSHIFT(Key_F)) \ + OP(XKB_KEY_g, LSHIFT(Key_G)) \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, LSHIFT(Key_H)) \ + OP(XKB_KEY_i, LSHIFT(Key_I)) \ + OP(XKB_KEY_j, LSHIFT(Key_J)) \ + OP(XKB_KEY_k, LSHIFT(Key_K)) \ + OP(XKB_KEY_l, LSHIFT(Key_L)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_m, LSHIFT(Key_M)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, LSHIFT(Key_N)) \ + OP(XKB_KEY_numbersign, Key_Equals) \ + OP(XKB_KEY_o, LSHIFT(Key_O)) \ + OP(XKB_KEY_p, LSHIFT(Key_P)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_7)) \ + OP(XKB_KEY_q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_r, LSHIFT(Key_R)) \ + OP(XKB_KEY_s, LSHIFT(Key_S)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_4)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, LSHIFT(Key_T)) \ + OP(XKB_KEY_u, LSHIFT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, LSHIFT(Key_V)) \ + OP(XKB_KEY_w, LSHIFT(Key_W)) \ + OP(XKB_KEY_x, LSHIFT(Key_X)) \ + OP(XKB_KEY_y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_z, LSHIFT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ge { +namespace ru { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ru +} // namespace ge +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ge/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/ge/standard/keymap.h new file mode 100644 index 0000000000..2ec0351d8e --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ge/standard/keymap.h @@ -0,0 +1,439 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ge +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_7)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) \ + OP(L'«', Key_NonUsBackslashAndPipe) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(Key_R)) \ + OP(L'°', RALT(Key_8)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'»', RALT(Key_Period)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'ა', Key_A) /* U+10d0, XKB_KEY_Georgian_an, GEORGIAN LETTER AN */ \ + OP(L'ბ', Key_B) /* U+10d1, XKB_KEY_Georgian_ban, GEORGIAN LETTER BAN */ \ + OP(L'გ', Key_G) /* U+10d2, XKB_KEY_Georgian_gan, GEORGIAN LETTER GAN */ \ + OP(L'დ', Key_D) /* U+10d3, XKB_KEY_Georgian_don, GEORGIAN LETTER DON */ \ + OP(L'ე', Key_E) /* U+10d4, XKB_KEY_Georgian_en, GEORGIAN LETTER EN */ \ + OP(L'ვ', Key_V) /* U+10d5, XKB_KEY_Georgian_vin, GEORGIAN LETTER VIN */ \ + OP(L'ზ', Key_Z) /* U+10d6, XKB_KEY_Georgian_zen, GEORGIAN LETTER ZEN */ \ + OP(L'თ', LSHIFT(Key_T)) /* U+10d7, XKB_KEY_Georgian_tan, GEORGIAN LETTER TAN */ \ + OP(L'ი', Key_I) /* U+10d8, XKB_KEY_Georgian_in, GEORGIAN LETTER IN */ \ + OP(L'კ', Key_K) /* U+10d9, XKB_KEY_Georgian_kan, GEORGIAN LETTER KAN */ \ + OP(L'ლ', Key_L) /* U+10da, XKB_KEY_Georgian_las, GEORGIAN LETTER LAS */ \ + OP(L'მ', Key_M) /* U+10db, XKB_KEY_Georgian_man, GEORGIAN LETTER MAN */ \ + OP(L'ნ', Key_N) /* U+10dc, XKB_KEY_Georgian_nar, GEORGIAN LETTER NAR */ \ + OP(L'ო', Key_O) /* U+10dd, XKB_KEY_Georgian_on, GEORGIAN LETTER ON */ \ + OP(L'პ', Key_P) /* U+10de, XKB_KEY_Georgian_par, GEORGIAN LETTER PAR */ \ + OP(L'ჟ', LSHIFT(Key_J)) /* U+10df, XKB_KEY_Georgian_zhar, GEORGIAN LETTER ZHAR */ \ + OP(L'რ', Key_R) /* U+10e0, XKB_KEY_Georgian_rae, GEORGIAN LETTER RAE */ \ + OP(L'ს', Key_S) /* U+10e1, XKB_KEY_Georgian_san, GEORGIAN LETTER SAN */ \ + OP(L'ტ', Key_T) /* U+10e2, XKB_KEY_Georgian_tar, GEORGIAN LETTER TAR */ \ + OP(L'უ', Key_U) /* U+10e3, XKB_KEY_Georgian_un, GEORGIAN LETTER UN */ \ + OP(L'ფ', Key_F) /* U+10e4, XKB_KEY_Georgian_phar, GEORGIAN LETTER PHAR */ \ + OP(L'ქ', Key_Q) /* U+10e5, XKB_KEY_Georgian_khar, GEORGIAN LETTER KHAR */ \ + OP(L'ღ', LSHIFT(Key_R)) /* U+10e6, XKB_KEY_Georgian_ghan, GEORGIAN LETTER GHAN */ \ + OP(L'ყ', Key_Y) /* U+10e7, XKB_KEY_Georgian_qar, GEORGIAN LETTER QAR */ \ + OP(L'შ', LSHIFT(Key_S)) /* U+10e8, XKB_KEY_Georgian_shin, GEORGIAN LETTER SHIN */ \ + OP(L'ჩ', LSHIFT(Key_C)) /* U+10e9, XKB_KEY_Georgian_chin, GEORGIAN LETTER CHIN */ \ + OP(L'ც', Key_C) /* U+10ea, XKB_KEY_Georgian_can, GEORGIAN LETTER CAN */ \ + OP(L'ძ', LSHIFT(Key_Z)) /* U+10eb, XKB_KEY_Georgian_jil, GEORGIAN LETTER JIL */ \ + OP(L'წ', Key_W) /* U+10ec, XKB_KEY_Georgian_cil, GEORGIAN LETTER CIL */ \ + OP(L'ჭ', LSHIFT(Key_W)) /* U+10ed, XKB_KEY_Georgian_char, GEORGIAN LETTER CHAR */ \ + OP(L'ხ', Key_X) /* U+10ee, XKB_KEY_Georgian_xan, GEORGIAN LETTER XAN */ \ + OP(L'ჯ', Key_J) /* U+10ef, XKB_KEY_Georgian_jhan, GEORGIAN LETTER JHAN */ \ + OP(L'ჰ', Key_H) /* U+10f0, XKB_KEY_Georgian_hae, GEORGIAN LETTER HAE */ \ + OP(L'ჱ', RALT(Key_E)) /* U+10f1, XKB_KEY_Georgian_he, GEORGIAN LETTER HE */ \ + OP(L'ჲ', RALT(Key_I)) /* U+10f2, XKB_KEY_Georgian_hie, GEORGIAN LETTER HIE */ \ + OP(L'ჳ', RALT(Key_V)) /* U+10f3, XKB_KEY_Georgian_we, GEORGIAN LETTER WE */ \ + OP(L'ჴ', RALT(Key_X)) /* U+10f4, XKB_KEY_Georgian_har, GEORGIAN LETTER HAR */ \ + OP(L'ჵ', RALT(Key_H)) /* U+10f5, XKB_KEY_Georgian_hoe, GEORGIAN LETTER HOE */ \ + OP(L'ჶ', RALT(Key_F)) /* U+10f6, XKB_KEY_Georgian_fi, GEORGIAN LETTER FI */ \ + OP(L'ჷ', RALT(Key_J)) \ + OP(L'ჸ', RALT(Key_Y)) \ + OP(L'ჹ', RALT(Key_G)) \ + OP(L'ჺ', RALT(Key_A)) \ + OP(L'჻', RALT(Key_Slash)) \ + OP(L'ჼ', RALT(Key_N)) \ + OP(L'–', RALT(Key_Equals)) \ + OP(L'—', RALT(Key_Minus)) \ + OP(L'“', RALT(Key_3)) \ + OP(L'„', Key_Backtick) \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'№', RALT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Georgian_an, Key_A) \ + OP(XKB_KEY_Georgian_ban, Key_B) \ + OP(XKB_KEY_Georgian_can, Key_C) \ + OP(XKB_KEY_Georgian_char, LSHIFT(Key_W)) \ + OP(XKB_KEY_Georgian_chin, LSHIFT(Key_C)) \ + OP(XKB_KEY_Georgian_cil, Key_W) \ + OP(XKB_KEY_Georgian_don, Key_D) \ + OP(XKB_KEY_Georgian_en, Key_E) \ + OP(XKB_KEY_Georgian_fi, RALT(Key_F)) \ + OP(XKB_KEY_Georgian_gan, Key_G) \ + OP(XKB_KEY_Georgian_ghan, LSHIFT(Key_R)) \ + OP(XKB_KEY_Georgian_hae, Key_H) \ + OP(XKB_KEY_Georgian_har, RALT(Key_X)) \ + OP(XKB_KEY_Georgian_he, RALT(Key_E)) \ + OP(XKB_KEY_Georgian_hie, RALT(Key_I)) \ + OP(XKB_KEY_Georgian_hoe, RALT(Key_H)) \ + OP(XKB_KEY_Georgian_in, Key_I) \ + OP(XKB_KEY_Georgian_jhan, Key_J) \ + OP(XKB_KEY_Georgian_jil, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Georgian_kan, Key_K) \ + OP(XKB_KEY_Georgian_khar, Key_Q) \ + OP(XKB_KEY_Georgian_las, Key_L) \ + OP(XKB_KEY_Georgian_man, Key_M) \ + OP(XKB_KEY_Georgian_nar, Key_N) \ + OP(XKB_KEY_Georgian_on, Key_O) \ + OP(XKB_KEY_Georgian_par, Key_P) \ + OP(XKB_KEY_Georgian_phar, Key_F) \ + OP(XKB_KEY_Georgian_qar, Key_Y) \ + OP(XKB_KEY_Georgian_rae, Key_R) \ + OP(XKB_KEY_Georgian_san, Key_S) \ + OP(XKB_KEY_Georgian_shin, LSHIFT(Key_S)) \ + OP(XKB_KEY_Georgian_tan, LSHIFT(Key_T)) \ + OP(XKB_KEY_Georgian_tar, Key_T) \ + OP(XKB_KEY_Georgian_un, Key_U) \ + OP(XKB_KEY_Georgian_vin, Key_V) \ + OP(XKB_KEY_Georgian_we, RALT(Key_V)) \ + OP(XKB_KEY_Georgian_xan, Key_X) \ + OP(XKB_KEY_Georgian_zen, Key_Z) \ + OP(XKB_KEY_Georgian_zhar, LSHIFT(Key_J)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_degree, RALT(Key_8)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_guillemotright, RALT(Key_Period)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_section, RALT(Key_7)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ge { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace ge +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/gh/akan/keymap.h b/src/kaleidoscope/host_keymap/linux/gh/akan/keymap.h new file mode 100644 index 0000000000..c6d7f4edd6 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/gh/akan/keymap.h @@ -0,0 +1,447 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: gh +// variant: akan + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ɔ', LSHIFT(Key_X)) \ + OP(L'Ɛ', LSHIFT(Key_Q)) \ + OP(L'ɔ', Key_X) \ + OP(L'ɛ', Key_Q) \ + OP(L'₵', LSHIFT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, RALT(Key_X)) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace gh { +namespace akan { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace akan +} // namespace gh +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/gh/avn/keymap.h b/src/kaleidoscope/host_keymap/linux/gh/avn/keymap.h new file mode 100644 index 0000000000..9551b7a9fc --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/gh/avn/keymap.h @@ -0,0 +1,445 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: gh +// variant: avn + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_4)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ŋ', LSHIFT(Key_J)) \ + OP(L'ŋ', Key_J) \ + OP(L'Ɔ', LSHIFT(Key_C)) \ + OP(L'Ɖ', RALT(LSHIFT(Key_D))) \ + OP(L'Ɛ', LSHIFT(Key_LeftBracket)) \ + OP(L'Ƒ', RALT(LSHIFT(Key_F))) \ + OP(L'ƒ', RALT(Key_F)) \ + OP(L'Ɩ', RALT(LSHIFT(Key_I))) \ + OP(L'Ʊ', RALT(LSHIFT(Key_U))) \ + OP(L'Ʋ', LSHIFT(Key_Q)) \ + OP(L'ɔ', Key_C) \ + OP(L'ɖ', RALT(Key_D)) \ + OP(L'ɛ', Key_LeftBracket) \ + OP(L'ɩ', RALT(Key_I)) \ + OP(L'ʊ', RALT(Key_U)) \ + OP(L'ʋ', Key_Q) \ + OP(L'̀', RALT(Key_Backtick)) \ + OP(L'́', RALT(Key_Quote)) \ + OP(L'̃', RALT(LSHIFT(Key_Backtick))) \ + OP(L'̄', RALT(Key_Minus)) \ + OP(L'₵', RALT(LSHIFT(Key_4))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_cent, RALT(Key_4)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace gh { +namespace avn { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace avn +} // namespace gh +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/gh/ewe/keymap.h b/src/kaleidoscope/host_keymap/linux/gh/ewe/keymap.h new file mode 100644 index 0000000000..e1e4200558 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/gh/ewe/keymap.h @@ -0,0 +1,451 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: gh +// variant: ewe + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', RALT(LSHIFT(Key_C))) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', RALT(LSHIFT(Key_J))) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', RALT(Key_C)) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', RALT(Key_J)) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', RALT(LSHIFT(Key_C))) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', RALT(LSHIFT(Key_J))) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', RALT(Key_C)) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', RALT(Key_J)) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ŋ', LSHIFT(Key_C)) \ + OP(L'ŋ', Key_C) \ + OP(L'Ɔ', LSHIFT(Key_LeftBracket)) \ + OP(L'Ɖ', LSHIFT(Key_NonUsPound)) \ + OP(L'Ɛ', LSHIFT(Key_Q)) \ + OP(L'Ƒ', LSHIFT(Key_J)) \ + OP(L'ƒ', Key_J) \ + OP(L'Ɣ', RALT(LSHIFT(Key_G))) \ + OP(L'Ʋ', LSHIFT(Key_RightBracket)) \ + OP(L'ɔ', Key_LeftBracket) \ + OP(L'ɖ', Key_NonUsPound) \ + OP(L'ɛ', Key_Q) \ + OP(L'ɣ', RALT(Key_G)) \ + OP(L'ʋ', Key_RightBracket) \ + OP(L'₵', LSHIFT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, RALT(Key_J)) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace gh { +namespace ewe { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ewe +} // namespace gh +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/gh/fula/keymap.h b/src/kaleidoscope/host_keymap/linux/gh/fula/keymap.h new file mode 100644 index 0000000000..0dbf42244e --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/gh/fula/keymap.h @@ -0,0 +1,475 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: gh +// variant: fula + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', RALT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', RALT(LSHIFT(Key_Semicolon))) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', RALT(LSHIFT(Key_Slash))) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', RALT(LSHIFT(Key_D))) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', RALT(LSHIFT(Key_M))) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', RALT(LSHIFT(Key_Z))) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', RALT(Key_D)) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', RALT(Key_M)) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', RALT(Key_Z)) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', RALT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', RALT(LSHIFT(Key_Semicolon))) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', RALT(LSHIFT(Key_Slash))) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', RALT(LSHIFT(Key_D))) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', RALT(LSHIFT(Key_M))) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', RALT(LSHIFT(Key_Z))) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', RALT(Key_D)) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', RALT(Key_M)) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', RALT(Key_Z)) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ç', LSHIFT(Key_Period)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ñ', LSHIFT(Key_M)) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ü', LSHIFT(Key_W)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'ç', Key_Period) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ñ', Key_M) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ü', Key_W) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'İ', LSHIFT(Key_Semicolon)) \ + OP(L'ı', Key_Semicolon) \ + OP(L'Ş', LSHIFT(Key_Slash)) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', Key_Slash) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ɗ', LSHIFT(Key_D)) \ + OP(L'Ǝ', LSHIFT(Key_Quote)) \ + OP(L'Ɲ', LSHIFT(Key_Z)) \ + OP(L'Ƴ', LSHIFT(Key_LeftBracket)) \ + OP(L'ƴ', Key_LeftBracket) \ + OP(L'ǝ', Key_Quote) \ + OP(L'Ǧ', LSHIFT(Key_RightBracket)) /* U+01e6, XKB_KEY_Gcaron, LATIN CAPITAL LETTER G WITH CARON */ \ + OP(L'ǧ', Key_RightBracket) /* U+01e7, XKB_KEY_gcaron, LATIN SMALL LETTER G WITH CARON */ \ + OP(L'ɗ', Key_D) \ + OP(L'ɲ', Key_Z) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'₵', LSHIFT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gcaron, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, LSHIFT(Key_M)) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_W)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_braceright, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_Period) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, RALT(Key_D)) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gcaron, Key_RightBracket) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, RALT(Key_M)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_ntilde, Key_M) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_quotedbl, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, Key_Slash) \ + OP(XKB_KEY_semicolon, RALT(Key_Semicolon)) \ + OP(XKB_KEY_slash, RALT(Key_Slash)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_W) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, RALT(Key_W)) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace gh { +namespace fula { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace fula +} // namespace gh +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/gh/ga/keymap.h b/src/kaleidoscope/host_keymap/linux/gh/ga/keymap.h new file mode 100644 index 0000000000..c3e3188f72 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/gh/ga/keymap.h @@ -0,0 +1,449 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: gh +// variant: ga + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', RALT(LSHIFT(Key_C))) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', RALT(Key_C)) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', RALT(LSHIFT(Key_C))) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', RALT(Key_C)) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ŋ', LSHIFT(Key_C)) \ + OP(L'ŋ', Key_C) \ + OP(L'Ɔ', LSHIFT(Key_X)) \ + OP(L'Ɛ', LSHIFT(Key_Q)) \ + OP(L'ɔ', Key_X) \ + OP(L'ɛ', Key_Q) \ + OP(L'₵', LSHIFT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, RALT(Key_X)) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace gh { +namespace ga { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ga +} // namespace gh +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/gh/generic/keymap.h b/src/kaleidoscope/host_keymap/linux/gh/generic/keymap.h new file mode 100644 index 0000000000..98da84cdb5 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/gh/generic/keymap.h @@ -0,0 +1,461 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: gh +// variant: generic + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_N))) \ + OP(L'ŋ', RALT(Key_N)) \ + OP(L'Ɔ', RALT(LSHIFT(Key_C))) \ + OP(L'Ɖ', RALT(LSHIFT(Key_D))) \ + OP(L'Ɛ', RALT(LSHIFT(Key_E))) \ + OP(L'Ƒ', RALT(LSHIFT(Key_F))) \ + OP(L'ƒ', RALT(Key_F)) \ + OP(L'Ɣ', RALT(LSHIFT(Key_G))) \ + OP(L'Ʋ', RALT(LSHIFT(Key_V))) \ + OP(L'Ƶ', RALT(LSHIFT(Key_Z))) /* U+01b5, XKB_KEY_Zstroke, LATIN CAPITAL LETTER Z WITH STROKE */ \ + OP(L'ƶ', RALT(Key_Z)) /* U+01b6, XKB_KEY_zstroke, LATIN SMALL LETTER Z WITH STROKE */ \ + OP(L'ɔ', RALT(Key_C)) \ + OP(L'ɖ', RALT(Key_D)) \ + OP(L'ɛ', RALT(Key_E)) \ + OP(L'ɣ', RALT(Key_G)) \ + OP(L'ʋ', RALT(Key_V)) \ + OP(L'₵', RALT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zstroke, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zstroke, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace gh { +namespace generic { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace generic +} // namespace gh +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/gh/gillbt/keymap.h b/src/kaleidoscope/host_keymap/linux/gh/gillbt/keymap.h new file mode 100644 index 0000000000..961fda3bd9 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/gh/gillbt/keymap.h @@ -0,0 +1,475 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: gh +// variant: gillbt + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', RALT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', RALT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_4)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) \ + OP(L'ç', RALT(Key_C)) \ + OP(L'Ŋ', LSHIFT(Key_Equals)) \ + OP(L'ŋ', Key_Equals) \ + OP(L'Ɔ', LSHIFT(Key_RightBracket)) \ + OP(L'Ɖ', RALT(LSHIFT(Key_D))) \ + OP(L'Ǝ', RALT(LSHIFT(Key_E))) \ + OP(L'Ɛ', LSHIFT(Key_LeftBracket)) \ + OP(L'Ƒ', RALT(LSHIFT(Key_F))) \ + OP(L'ƒ', RALT(Key_F)) \ + OP(L'Ɣ', RALT(LSHIFT(Key_G))) \ + OP(L'Ɩ', LSHIFT(Key_X)) \ + OP(L'Ʊ', RALT(LSHIFT(Key_U))) \ + OP(L'Ʋ', LSHIFT(Key_Q)) \ + OP(L'Ʒ', RALT(LSHIFT(Key_Z))) /* U+01b7, XKB_KEY_EZH, LATIN CAPITAL LETTER EZH */ \ + OP(L'ǝ', RALT(Key_E)) \ + OP(L'ɔ', Key_RightBracket) \ + OP(L'ɖ', RALT(Key_D)) \ + OP(L'ɛ', Key_LeftBracket) \ + OP(L'ɣ', RALT(Key_G)) \ + OP(L'ɩ', Key_X) \ + OP(L'ʊ', RALT(Key_U)) \ + OP(L'ʋ', Key_Q) \ + OP(L'ʒ', RALT(Key_Z)) /* U+0292, XKB_KEY_ezh, LATIN SMALL LETTER EZH */ \ + OP(L'̀', RALT(Key_Backtick)) \ + OP(L'́', RALT(Key_Quote)) \ + OP(L'̂', RALT(Key_6)) \ + OP(L'̃', RALT(LSHIFT(Key_Backtick))) \ + OP(L'̄', RALT(LSHIFT(Key_Minus))) \ + OP(L'̱', RALT(Key_Minus)) \ + OP(L'₵', RALT(LSHIFT(Key_4))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_EZH, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_braceright, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_4)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, RALT(Key_Equals)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_ezh, RALT(Key_Z)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, RALT(Key_X)) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace gh { +namespace gillbt { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace gillbt +} // namespace gh +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/gh/hausa/keymap.h b/src/kaleidoscope/host_keymap/linux/gh/hausa/keymap.h new file mode 100644 index 0000000000..c00ddb5f72 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/gh/hausa/keymap.h @@ -0,0 +1,475 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: gh +// variant: hausa + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', RALT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', RALT(LSHIFT(Key_Semicolon))) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', RALT(LSHIFT(Key_Slash))) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', RALT(LSHIFT(Key_D))) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', RALT(LSHIFT(Key_M))) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', RALT(LSHIFT(Key_Z))) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', RALT(Key_D)) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', RALT(Key_M)) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', RALT(Key_Z)) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', RALT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', RALT(LSHIFT(Key_Semicolon))) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', RALT(LSHIFT(Key_Slash))) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', RALT(LSHIFT(Key_D))) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', RALT(LSHIFT(Key_M))) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', RALT(LSHIFT(Key_Z))) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', RALT(Key_D)) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', RALT(Key_M)) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', RALT(Key_Z)) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ç', LSHIFT(Key_Period)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ñ', LSHIFT(Key_M)) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ü', LSHIFT(Key_W)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'ç', Key_Period) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ñ', Key_M) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ü', Key_W) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'İ', LSHIFT(Key_Semicolon)) \ + OP(L'ı', Key_Semicolon) \ + OP(L'Ş', LSHIFT(Key_Slash)) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', Key_Slash) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ɗ', LSHIFT(Key_D)) \ + OP(L'Ǝ', LSHIFT(Key_Quote)) \ + OP(L'Ɲ', LSHIFT(Key_Z)) \ + OP(L'Ƴ', LSHIFT(Key_LeftBracket)) \ + OP(L'ƴ', Key_LeftBracket) \ + OP(L'ǝ', Key_Quote) \ + OP(L'Ǧ', LSHIFT(Key_RightBracket)) /* U+01e6, XKB_KEY_Gcaron, LATIN CAPITAL LETTER G WITH CARON */ \ + OP(L'ǧ', Key_RightBracket) /* U+01e7, XKB_KEY_gcaron, LATIN SMALL LETTER G WITH CARON */ \ + OP(L'ɗ', Key_D) \ + OP(L'ɲ', Key_Z) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'₵', LSHIFT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gcaron, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, LSHIFT(Key_M)) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_W)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_braceright, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_Period) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, RALT(Key_D)) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gcaron, Key_RightBracket) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, RALT(Key_M)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_ntilde, Key_M) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_quotedbl, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, Key_Slash) \ + OP(XKB_KEY_semicolon, RALT(Key_Semicolon)) \ + OP(XKB_KEY_slash, RALT(Key_Slash)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_W) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, RALT(Key_W)) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace gh { +namespace hausa { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace hausa +} // namespace gh +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/gh/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/gh/standard/keymap.h new file mode 100644 index 0000000000..991aee37c7 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/gh/standard/keymap.h @@ -0,0 +1,443 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: gh +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'₵', LSHIFT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace gh { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace gh +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/gn/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/gn/standard/keymap.h new file mode 100644 index 0000000000..ce220790e4 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/gn/standard/keymap.h @@ -0,0 +1,309 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: gn +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_RightBracket)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'،', Key_X) \ + OP(L'؛', Key_Comma) \ + OP(L'؟', LSHIFT(Key_M)) \ + OP(L'߀', LSHIFT(Key_0)) \ + OP(L'߁', LSHIFT(Key_1)) \ + OP(L'߂', LSHIFT(Key_2)) \ + OP(L'߃', LSHIFT(Key_3)) \ + OP(L'߄', LSHIFT(Key_4)) \ + OP(L'߅', LSHIFT(Key_5)) \ + OP(L'߆', LSHIFT(Key_6)) \ + OP(L'߇', LSHIFT(Key_7)) \ + OP(L'߈', LSHIFT(Key_8)) \ + OP(L'߉', LSHIFT(Key_9)) \ + OP(L'ߊ', Key_Q) \ + OP(L'ߋ', LSHIFT(Key_E)) \ + OP(L'ߌ', Key_I) \ + OP(L'ߍ', Key_E) \ + OP(L'ߎ', Key_U) \ + OP(L'ߏ', LSHIFT(Key_O)) \ + OP(L'ߐ', Key_O) \ + OP(L'ߑ', Key_NonUsPound) \ + OP(L'ߒ', LSHIFT(Key_N)) \ + OP(L'ߓ', Key_B) \ + OP(L'ߔ', Key_P) \ + OP(L'ߕ', Key_T) \ + OP(L'ߖ', Key_J) \ + OP(L'ߗ', Key_C) \ + OP(L'ߘ', Key_D) \ + OP(L'ߙ', Key_R) \ + OP(L'ߚ', LSHIFT(Key_R)) \ + OP(L'ߛ', Key_S) \ + OP(L'ߜ', Key_G) \ + OP(L'ߝ', Key_F) \ + OP(L'ߞ', Key_K) \ + OP(L'ߟ', Key_L) \ + OP(L'ߠ', Key_W) \ + OP(L'ߡ', Key_Semicolon) \ + OP(L'ߢ', Key_V) \ + OP(L'ߣ', Key_N) \ + OP(L'ߤ', Key_H) \ + OP(L'ߥ', Key_Z) \ + OP(L'ߦ', Key_Y) \ + OP(L'ߧ', LSHIFT(Key_Y)) \ + OP(L'ߨ', LSHIFT(Key_J)) \ + OP(L'ߩ', LSHIFT(Key_C)) \ + OP(L'ߪ', LSHIFT(Key_L)) \ + OP(L'߫', Key_2) \ + OP(L'߬', Key_7) \ + OP(L'߭', Key_9) \ + OP(L'߮', Key_0) \ + OP(L'߯', Key_Quote) \ + OP(L'߱', Key_1) \ + OP(L'߳', Key_LeftBracket) \ + OP(L'ߴ', Key_4) \ + OP(L'ߵ', Key_3) \ + OP(L'߶', LSHIFT(Key_U)) \ + OP(L'߷', LSHIFT(Key_G)) \ + OP(L'߸', Key_M) \ + OP(L'߹', Key_Slash) \ + OP(L'ߺ', Key_8) \ + OP(L'⸜', RALT(Key_4)) \ + OP(L'⸝', RALT(Key_5)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_currency, RALT(Key_RightBracket)) \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, RALT(Key_Quote)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace gn { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace gn +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/gr/extended/keymap.h b/src/kaleidoscope/host_keymap/linux/gr/extended/keymap.h new file mode 100644 index 0000000000..f80fcf103c --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/gr/extended/keymap.h @@ -0,0 +1,402 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: gr +// variant: extended + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Q) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Q) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', Key_NonUsBackslashAndPipe) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_0)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_Minus)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'·', RALT(Key_Q)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'»', RALT(Key_Period)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Α', LSHIFT(Key_A)) /* U+0391, XKB_KEY_Greek_ALPHA, GREEK CAPITAL LETTER ALPHA */ \ + OP(L'Β', LSHIFT(Key_B)) /* U+0392, XKB_KEY_Greek_BETA, GREEK CAPITAL LETTER BETA */ \ + OP(L'Γ', LSHIFT(Key_G)) /* U+0393, XKB_KEY_Greek_GAMMA, GREEK CAPITAL LETTER GAMMA */ \ + OP(L'Δ', LSHIFT(Key_D)) /* U+0394, XKB_KEY_Greek_DELTA, GREEK CAPITAL LETTER DELTA */ \ + OP(L'Ε', LSHIFT(Key_E)) /* U+0395, XKB_KEY_Greek_EPSILON, GREEK CAPITAL LETTER EPSILON */ \ + OP(L'Ζ', LSHIFT(Key_Z)) /* U+0396, XKB_KEY_Greek_ZETA, GREEK CAPITAL LETTER ZETA */ \ + OP(L'Η', LSHIFT(Key_H)) /* U+0397, XKB_KEY_Greek_ETA, GREEK CAPITAL LETTER ETA */ \ + OP(L'Θ', LSHIFT(Key_U)) /* U+0398, XKB_KEY_Greek_THETA, GREEK CAPITAL LETTER THETA */ \ + OP(L'Ι', LSHIFT(Key_I)) /* U+0399, XKB_KEY_Greek_IOTA, GREEK CAPITAL LETTER IOTA */ \ + OP(L'Κ', LSHIFT(Key_K)) /* U+039a, XKB_KEY_Greek_KAPPA, GREEK CAPITAL LETTER KAPPA */ \ + OP(L'Λ', LSHIFT(Key_L)) /* U+039b, XKB_KEY_Greek_LAMDA, GREEK CAPITAL LETTER LAMDA */ \ + OP(L'Μ', LSHIFT(Key_M)) /* U+039c, XKB_KEY_Greek_MU, GREEK CAPITAL LETTER MU */ \ + OP(L'Ν', LSHIFT(Key_N)) /* U+039d, XKB_KEY_Greek_NU, GREEK CAPITAL LETTER NU */ \ + OP(L'Ξ', LSHIFT(Key_J)) /* U+039e, XKB_KEY_Greek_XI, GREEK CAPITAL LETTER XI */ \ + OP(L'Ο', LSHIFT(Key_O)) /* U+039f, XKB_KEY_Greek_OMICRON, GREEK CAPITAL LETTER OMICRON */ \ + OP(L'Π', LSHIFT(Key_P)) /* U+03a0, XKB_KEY_Greek_PI, GREEK CAPITAL LETTER PI */ \ + OP(L'Ρ', LSHIFT(Key_R)) /* U+03a1, XKB_KEY_Greek_RHO, GREEK CAPITAL LETTER RHO */ \ + OP(L'Σ', LSHIFT(Key_W)) /* U+03a3, XKB_KEY_Greek_SIGMA, GREEK CAPITAL LETTER SIGMA */ \ + OP(L'Τ', LSHIFT(Key_T)) /* U+03a4, XKB_KEY_Greek_TAU, GREEK CAPITAL LETTER TAU */ \ + OP(L'Υ', LSHIFT(Key_Y)) /* U+03a5, XKB_KEY_Greek_UPSILON, GREEK CAPITAL LETTER UPSILON */ \ + OP(L'Φ', LSHIFT(Key_F)) /* U+03a6, XKB_KEY_Greek_PHI, GREEK CAPITAL LETTER PHI */ \ + OP(L'Χ', LSHIFT(Key_X)) /* U+03a7, XKB_KEY_Greek_CHI, GREEK CAPITAL LETTER CHI */ \ + OP(L'Ψ', LSHIFT(Key_C)) /* U+03a8, XKB_KEY_Greek_PSI, GREEK CAPITAL LETTER PSI */ \ + OP(L'Ω', LSHIFT(Key_V)) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'α', Key_A) /* U+03b1, XKB_KEY_Greek_alpha, GREEK SMALL LETTER ALPHA */ \ + OP(L'β', Key_B) /* U+03b2, XKB_KEY_Greek_beta, GREEK SMALL LETTER BETA */ \ + OP(L'γ', Key_G) /* U+03b3, XKB_KEY_Greek_gamma, GREEK SMALL LETTER GAMMA */ \ + OP(L'δ', Key_D) /* U+03b4, XKB_KEY_Greek_delta, GREEK SMALL LETTER DELTA */ \ + OP(L'ε', Key_E) /* U+03b5, XKB_KEY_Greek_epsilon, GREEK SMALL LETTER EPSILON */ \ + OP(L'ζ', Key_Z) /* U+03b6, XKB_KEY_Greek_zeta, GREEK SMALL LETTER ZETA */ \ + OP(L'η', Key_H) /* U+03b7, XKB_KEY_Greek_eta, GREEK SMALL LETTER ETA */ \ + OP(L'θ', Key_U) /* U+03b8, XKB_KEY_Greek_theta, GREEK SMALL LETTER THETA */ \ + OP(L'ι', Key_I) /* U+03b9, XKB_KEY_Greek_iota, GREEK SMALL LETTER IOTA */ \ + OP(L'κ', Key_K) /* U+03ba, XKB_KEY_Greek_kappa, GREEK SMALL LETTER KAPPA */ \ + OP(L'λ', Key_L) /* U+03bb, XKB_KEY_Greek_lamda, GREEK SMALL LETTER LAMDA */ \ + OP(L'μ', Key_M) /* U+03bc, XKB_KEY_Greek_mu, GREEK SMALL LETTER MU */ \ + OP(L'ν', Key_N) /* U+03bd, XKB_KEY_Greek_nu, GREEK SMALL LETTER NU */ \ + OP(L'ξ', Key_J) /* U+03be, XKB_KEY_Greek_xi, GREEK SMALL LETTER XI */ \ + OP(L'ο', Key_O) /* U+03bf, XKB_KEY_Greek_omicron, GREEK SMALL LETTER OMICRON */ \ + OP(L'π', Key_P) /* U+03c0, XKB_KEY_Greek_pi, GREEK SMALL LETTER PI */ \ + OP(L'ρ', Key_R) /* U+03c1, XKB_KEY_Greek_rho, GREEK SMALL LETTER RHO */ \ + OP(L'ς', Key_W) /* U+03c2, XKB_KEY_Greek_finalsmallsigma, GREEK SMALL LETTER FINAL SIGMA */ \ + OP(L'σ', Key_S) /* U+03c3, XKB_KEY_Greek_sigma, GREEK SMALL LETTER SIGMA */ \ + OP(L'τ', Key_T) /* U+03c4, XKB_KEY_Greek_tau, GREEK SMALL LETTER TAU */ \ + OP(L'υ', Key_Y) /* U+03c5, XKB_KEY_Greek_upsilon, GREEK SMALL LETTER UPSILON */ \ + OP(L'φ', Key_F) /* U+03c6, XKB_KEY_Greek_phi, GREEK SMALL LETTER PHI */ \ + OP(L'χ', Key_X) /* U+03c7, XKB_KEY_Greek_chi, GREEK SMALL LETTER CHI */ \ + OP(L'ψ', Key_C) /* U+03c8, XKB_KEY_Greek_psi, GREEK SMALL LETTER PSI */ \ + OP(L'ω', Key_V) /* U+03c9, XKB_KEY_Greek_omega, GREEK SMALL LETTER OMEGA */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Greek_ALPHA, LSHIFT(Key_A)) \ + OP(XKB_KEY_Greek_BETA, LSHIFT(Key_B)) \ + OP(XKB_KEY_Greek_CHI, LSHIFT(Key_X)) \ + OP(XKB_KEY_Greek_DELTA, LSHIFT(Key_D)) \ + OP(XKB_KEY_Greek_EPSILON, LSHIFT(Key_E)) \ + OP(XKB_KEY_Greek_ETA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Greek_GAMMA, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_IOTA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Greek_KAPPA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Greek_LAMDA, LSHIFT(Key_L)) \ + OP(XKB_KEY_Greek_MU, LSHIFT(Key_M)) \ + OP(XKB_KEY_Greek_NU, LSHIFT(Key_N)) \ + OP(XKB_KEY_Greek_OMEGA, LSHIFT(Key_V)) \ + OP(XKB_KEY_Greek_OMICRON, LSHIFT(Key_O)) \ + OP(XKB_KEY_Greek_PHI, LSHIFT(Key_F)) \ + OP(XKB_KEY_Greek_PI, LSHIFT(Key_P)) \ + OP(XKB_KEY_Greek_PSI, LSHIFT(Key_C)) \ + OP(XKB_KEY_Greek_RHO, LSHIFT(Key_R)) \ + OP(XKB_KEY_Greek_SIGMA, LSHIFT(Key_W)) \ + OP(XKB_KEY_Greek_TAU, LSHIFT(Key_T)) \ + OP(XKB_KEY_Greek_THETA, LSHIFT(Key_U)) \ + OP(XKB_KEY_Greek_UPSILON, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Greek_XI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Greek_ZETA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Greek_alpha, Key_A) \ + OP(XKB_KEY_Greek_beta, Key_B) \ + OP(XKB_KEY_Greek_chi, Key_X) \ + OP(XKB_KEY_Greek_delta, Key_D) \ + OP(XKB_KEY_Greek_epsilon, Key_E) \ + OP(XKB_KEY_Greek_eta, Key_H) \ + OP(XKB_KEY_Greek_finalsmallsigma, Key_W) \ + OP(XKB_KEY_Greek_gamma, Key_G) \ + OP(XKB_KEY_Greek_iota, Key_I) \ + OP(XKB_KEY_Greek_kappa, Key_K) \ + OP(XKB_KEY_Greek_lamda, Key_L) \ + OP(XKB_KEY_Greek_mu, Key_M) \ + OP(XKB_KEY_Greek_nu, Key_N) \ + OP(XKB_KEY_Greek_omega, Key_V) \ + OP(XKB_KEY_Greek_omicron, Key_O) \ + OP(XKB_KEY_Greek_phi, Key_F) \ + OP(XKB_KEY_Greek_pi, Key_P) \ + OP(XKB_KEY_Greek_psi, Key_C) \ + OP(XKB_KEY_Greek_rho, Key_R) \ + OP(XKB_KEY_Greek_sigma, Key_S) \ + OP(XKB_KEY_Greek_tau, Key_T) \ + OP(XKB_KEY_Greek_theta, Key_U) \ + OP(XKB_KEY_Greek_upsilon, Key_Y) \ + OP(XKB_KEY_Greek_xi, Key_J) \ + OP(XKB_KEY_Greek_zeta, Key_Z) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Q)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_dead_acute, Key_Semicolon) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_Semicolon)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_degree, RALT(Key_0)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_guillemotright, RALT(Key_Period)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Q)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(Key_Minus)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_semicolon, Key_Q) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace gr { +namespace extended { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace extended +} // namespace gr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/gr/nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/gr/nodeadkeys/keymap.h new file mode 100644 index 0000000000..7658778898 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/gr/nodeadkeys/keymap.h @@ -0,0 +1,385 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: gr +// variant: nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Q) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Q) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'«', Key_NonUsBackslashAndPipe) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Α', LSHIFT(Key_A)) /* U+0391, XKB_KEY_Greek_ALPHA, GREEK CAPITAL LETTER ALPHA */ \ + OP(L'Β', LSHIFT(Key_B)) /* U+0392, XKB_KEY_Greek_BETA, GREEK CAPITAL LETTER BETA */ \ + OP(L'Γ', LSHIFT(Key_G)) /* U+0393, XKB_KEY_Greek_GAMMA, GREEK CAPITAL LETTER GAMMA */ \ + OP(L'Δ', LSHIFT(Key_D)) /* U+0394, XKB_KEY_Greek_DELTA, GREEK CAPITAL LETTER DELTA */ \ + OP(L'Ε', LSHIFT(Key_E)) /* U+0395, XKB_KEY_Greek_EPSILON, GREEK CAPITAL LETTER EPSILON */ \ + OP(L'Ζ', LSHIFT(Key_Z)) /* U+0396, XKB_KEY_Greek_ZETA, GREEK CAPITAL LETTER ZETA */ \ + OP(L'Η', LSHIFT(Key_H)) /* U+0397, XKB_KEY_Greek_ETA, GREEK CAPITAL LETTER ETA */ \ + OP(L'Θ', LSHIFT(Key_U)) /* U+0398, XKB_KEY_Greek_THETA, GREEK CAPITAL LETTER THETA */ \ + OP(L'Ι', LSHIFT(Key_I)) /* U+0399, XKB_KEY_Greek_IOTA, GREEK CAPITAL LETTER IOTA */ \ + OP(L'Κ', LSHIFT(Key_K)) /* U+039a, XKB_KEY_Greek_KAPPA, GREEK CAPITAL LETTER KAPPA */ \ + OP(L'Λ', LSHIFT(Key_L)) /* U+039b, XKB_KEY_Greek_LAMDA, GREEK CAPITAL LETTER LAMDA */ \ + OP(L'Μ', LSHIFT(Key_M)) /* U+039c, XKB_KEY_Greek_MU, GREEK CAPITAL LETTER MU */ \ + OP(L'Ν', LSHIFT(Key_N)) /* U+039d, XKB_KEY_Greek_NU, GREEK CAPITAL LETTER NU */ \ + OP(L'Ξ', LSHIFT(Key_J)) /* U+039e, XKB_KEY_Greek_XI, GREEK CAPITAL LETTER XI */ \ + OP(L'Ο', LSHIFT(Key_O)) /* U+039f, XKB_KEY_Greek_OMICRON, GREEK CAPITAL LETTER OMICRON */ \ + OP(L'Π', LSHIFT(Key_P)) /* U+03a0, XKB_KEY_Greek_PI, GREEK CAPITAL LETTER PI */ \ + OP(L'Ρ', LSHIFT(Key_R)) /* U+03a1, XKB_KEY_Greek_RHO, GREEK CAPITAL LETTER RHO */ \ + OP(L'Σ', LSHIFT(Key_W)) /* U+03a3, XKB_KEY_Greek_SIGMA, GREEK CAPITAL LETTER SIGMA */ \ + OP(L'Τ', LSHIFT(Key_T)) /* U+03a4, XKB_KEY_Greek_TAU, GREEK CAPITAL LETTER TAU */ \ + OP(L'Υ', LSHIFT(Key_Y)) /* U+03a5, XKB_KEY_Greek_UPSILON, GREEK CAPITAL LETTER UPSILON */ \ + OP(L'Φ', LSHIFT(Key_F)) /* U+03a6, XKB_KEY_Greek_PHI, GREEK CAPITAL LETTER PHI */ \ + OP(L'Χ', LSHIFT(Key_X)) /* U+03a7, XKB_KEY_Greek_CHI, GREEK CAPITAL LETTER CHI */ \ + OP(L'Ψ', LSHIFT(Key_C)) /* U+03a8, XKB_KEY_Greek_PSI, GREEK CAPITAL LETTER PSI */ \ + OP(L'Ω', LSHIFT(Key_V)) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'α', Key_A) /* U+03b1, XKB_KEY_Greek_alpha, GREEK SMALL LETTER ALPHA */ \ + OP(L'β', Key_B) /* U+03b2, XKB_KEY_Greek_beta, GREEK SMALL LETTER BETA */ \ + OP(L'γ', Key_G) /* U+03b3, XKB_KEY_Greek_gamma, GREEK SMALL LETTER GAMMA */ \ + OP(L'δ', Key_D) /* U+03b4, XKB_KEY_Greek_delta, GREEK SMALL LETTER DELTA */ \ + OP(L'ε', Key_E) /* U+03b5, XKB_KEY_Greek_epsilon, GREEK SMALL LETTER EPSILON */ \ + OP(L'ζ', Key_Z) /* U+03b6, XKB_KEY_Greek_zeta, GREEK SMALL LETTER ZETA */ \ + OP(L'η', Key_H) /* U+03b7, XKB_KEY_Greek_eta, GREEK SMALL LETTER ETA */ \ + OP(L'θ', Key_U) /* U+03b8, XKB_KEY_Greek_theta, GREEK SMALL LETTER THETA */ \ + OP(L'ι', Key_I) /* U+03b9, XKB_KEY_Greek_iota, GREEK SMALL LETTER IOTA */ \ + OP(L'κ', Key_K) /* U+03ba, XKB_KEY_Greek_kappa, GREEK SMALL LETTER KAPPA */ \ + OP(L'λ', Key_L) /* U+03bb, XKB_KEY_Greek_lamda, GREEK SMALL LETTER LAMDA */ \ + OP(L'μ', Key_M) /* U+03bc, XKB_KEY_Greek_mu, GREEK SMALL LETTER MU */ \ + OP(L'ν', Key_N) /* U+03bd, XKB_KEY_Greek_nu, GREEK SMALL LETTER NU */ \ + OP(L'ξ', Key_J) /* U+03be, XKB_KEY_Greek_xi, GREEK SMALL LETTER XI */ \ + OP(L'ο', Key_O) /* U+03bf, XKB_KEY_Greek_omicron, GREEK SMALL LETTER OMICRON */ \ + OP(L'π', Key_P) /* U+03c0, XKB_KEY_Greek_pi, GREEK SMALL LETTER PI */ \ + OP(L'ρ', Key_R) /* U+03c1, XKB_KEY_Greek_rho, GREEK SMALL LETTER RHO */ \ + OP(L'ς', Key_W) /* U+03c2, XKB_KEY_Greek_finalsmallsigma, GREEK SMALL LETTER FINAL SIGMA */ \ + OP(L'σ', Key_S) /* U+03c3, XKB_KEY_Greek_sigma, GREEK SMALL LETTER SIGMA */ \ + OP(L'τ', Key_T) /* U+03c4, XKB_KEY_Greek_tau, GREEK SMALL LETTER TAU */ \ + OP(L'υ', Key_Y) /* U+03c5, XKB_KEY_Greek_upsilon, GREEK SMALL LETTER UPSILON */ \ + OP(L'φ', Key_F) /* U+03c6, XKB_KEY_Greek_phi, GREEK SMALL LETTER PHI */ \ + OP(L'χ', Key_X) /* U+03c7, XKB_KEY_Greek_chi, GREEK SMALL LETTER CHI */ \ + OP(L'ψ', Key_C) /* U+03c8, XKB_KEY_Greek_psi, GREEK SMALL LETTER PSI */ \ + OP(L'ω', Key_V) /* U+03c9, XKB_KEY_Greek_omega, GREEK SMALL LETTER OMEGA */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Greek_ALPHA, LSHIFT(Key_A)) \ + OP(XKB_KEY_Greek_BETA, LSHIFT(Key_B)) \ + OP(XKB_KEY_Greek_CHI, LSHIFT(Key_X)) \ + OP(XKB_KEY_Greek_DELTA, LSHIFT(Key_D)) \ + OP(XKB_KEY_Greek_EPSILON, LSHIFT(Key_E)) \ + OP(XKB_KEY_Greek_ETA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Greek_GAMMA, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_IOTA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Greek_KAPPA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Greek_LAMDA, LSHIFT(Key_L)) \ + OP(XKB_KEY_Greek_MU, LSHIFT(Key_M)) \ + OP(XKB_KEY_Greek_NU, LSHIFT(Key_N)) \ + OP(XKB_KEY_Greek_OMEGA, LSHIFT(Key_V)) \ + OP(XKB_KEY_Greek_OMICRON, LSHIFT(Key_O)) \ + OP(XKB_KEY_Greek_PHI, LSHIFT(Key_F)) \ + OP(XKB_KEY_Greek_PI, LSHIFT(Key_P)) \ + OP(XKB_KEY_Greek_PSI, LSHIFT(Key_C)) \ + OP(XKB_KEY_Greek_RHO, LSHIFT(Key_R)) \ + OP(XKB_KEY_Greek_SIGMA, LSHIFT(Key_W)) \ + OP(XKB_KEY_Greek_TAU, LSHIFT(Key_T)) \ + OP(XKB_KEY_Greek_THETA, LSHIFT(Key_U)) \ + OP(XKB_KEY_Greek_UPSILON, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Greek_XI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Greek_ZETA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Greek_alpha, Key_A) \ + OP(XKB_KEY_Greek_beta, Key_B) \ + OP(XKB_KEY_Greek_chi, Key_X) \ + OP(XKB_KEY_Greek_delta, Key_D) \ + OP(XKB_KEY_Greek_epsilon, Key_E) \ + OP(XKB_KEY_Greek_eta, Key_H) \ + OP(XKB_KEY_Greek_finalsmallsigma, Key_W) \ + OP(XKB_KEY_Greek_gamma, Key_G) \ + OP(XKB_KEY_Greek_iota, Key_I) \ + OP(XKB_KEY_Greek_kappa, Key_K) \ + OP(XKB_KEY_Greek_lamda, Key_L) \ + OP(XKB_KEY_Greek_mu, Key_M) \ + OP(XKB_KEY_Greek_nu, Key_N) \ + OP(XKB_KEY_Greek_omega, Key_V) \ + OP(XKB_KEY_Greek_omicron, Key_O) \ + OP(XKB_KEY_Greek_phi, Key_F) \ + OP(XKB_KEY_Greek_pi, Key_P) \ + OP(XKB_KEY_Greek_psi, Key_C) \ + OP(XKB_KEY_Greek_rho, Key_R) \ + OP(XKB_KEY_Greek_sigma, Key_S) \ + OP(XKB_KEY_Greek_tau, Key_T) \ + OP(XKB_KEY_Greek_theta, Key_U) \ + OP(XKB_KEY_Greek_upsilon, Key_Y) \ + OP(XKB_KEY_Greek_xi, Key_J) \ + OP(XKB_KEY_Greek_zeta, Key_Z) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_colon, LSHIFT(Key_Q)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_semicolon, Key_Q) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace gr { +namespace nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace nodeadkeys +} // namespace gr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/gr/polytonic/keymap.h b/src/kaleidoscope/host_keymap/linux/gr/polytonic/keymap.h new file mode 100644 index 0000000000..e5168a2d65 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/gr/polytonic/keymap.h @@ -0,0 +1,397 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: gr +// variant: polytonic + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Q) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Q) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', Key_NonUsBackslashAndPipe) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_0)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_Minus)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'·', RALT(Key_Q)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'»', RALT(Key_Period)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Α', LSHIFT(Key_A)) /* U+0391, XKB_KEY_Greek_ALPHA, GREEK CAPITAL LETTER ALPHA */ \ + OP(L'Β', LSHIFT(Key_B)) /* U+0392, XKB_KEY_Greek_BETA, GREEK CAPITAL LETTER BETA */ \ + OP(L'Γ', LSHIFT(Key_G)) /* U+0393, XKB_KEY_Greek_GAMMA, GREEK CAPITAL LETTER GAMMA */ \ + OP(L'Δ', LSHIFT(Key_D)) /* U+0394, XKB_KEY_Greek_DELTA, GREEK CAPITAL LETTER DELTA */ \ + OP(L'Ε', LSHIFT(Key_E)) /* U+0395, XKB_KEY_Greek_EPSILON, GREEK CAPITAL LETTER EPSILON */ \ + OP(L'Ζ', LSHIFT(Key_Z)) /* U+0396, XKB_KEY_Greek_ZETA, GREEK CAPITAL LETTER ZETA */ \ + OP(L'Η', LSHIFT(Key_H)) /* U+0397, XKB_KEY_Greek_ETA, GREEK CAPITAL LETTER ETA */ \ + OP(L'Θ', LSHIFT(Key_U)) /* U+0398, XKB_KEY_Greek_THETA, GREEK CAPITAL LETTER THETA */ \ + OP(L'Ι', LSHIFT(Key_I)) /* U+0399, XKB_KEY_Greek_IOTA, GREEK CAPITAL LETTER IOTA */ \ + OP(L'Κ', LSHIFT(Key_K)) /* U+039a, XKB_KEY_Greek_KAPPA, GREEK CAPITAL LETTER KAPPA */ \ + OP(L'Λ', LSHIFT(Key_L)) /* U+039b, XKB_KEY_Greek_LAMDA, GREEK CAPITAL LETTER LAMDA */ \ + OP(L'Μ', LSHIFT(Key_M)) /* U+039c, XKB_KEY_Greek_MU, GREEK CAPITAL LETTER MU */ \ + OP(L'Ν', LSHIFT(Key_N)) /* U+039d, XKB_KEY_Greek_NU, GREEK CAPITAL LETTER NU */ \ + OP(L'Ξ', LSHIFT(Key_J)) /* U+039e, XKB_KEY_Greek_XI, GREEK CAPITAL LETTER XI */ \ + OP(L'Ο', LSHIFT(Key_O)) /* U+039f, XKB_KEY_Greek_OMICRON, GREEK CAPITAL LETTER OMICRON */ \ + OP(L'Π', LSHIFT(Key_P)) /* U+03a0, XKB_KEY_Greek_PI, GREEK CAPITAL LETTER PI */ \ + OP(L'Ρ', LSHIFT(Key_R)) /* U+03a1, XKB_KEY_Greek_RHO, GREEK CAPITAL LETTER RHO */ \ + OP(L'Σ', LSHIFT(Key_W)) /* U+03a3, XKB_KEY_Greek_SIGMA, GREEK CAPITAL LETTER SIGMA */ \ + OP(L'Τ', LSHIFT(Key_T)) /* U+03a4, XKB_KEY_Greek_TAU, GREEK CAPITAL LETTER TAU */ \ + OP(L'Υ', LSHIFT(Key_Y)) /* U+03a5, XKB_KEY_Greek_UPSILON, GREEK CAPITAL LETTER UPSILON */ \ + OP(L'Φ', LSHIFT(Key_F)) /* U+03a6, XKB_KEY_Greek_PHI, GREEK CAPITAL LETTER PHI */ \ + OP(L'Χ', LSHIFT(Key_X)) /* U+03a7, XKB_KEY_Greek_CHI, GREEK CAPITAL LETTER CHI */ \ + OP(L'Ψ', LSHIFT(Key_C)) /* U+03a8, XKB_KEY_Greek_PSI, GREEK CAPITAL LETTER PSI */ \ + OP(L'Ω', LSHIFT(Key_V)) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'α', Key_A) /* U+03b1, XKB_KEY_Greek_alpha, GREEK SMALL LETTER ALPHA */ \ + OP(L'β', Key_B) /* U+03b2, XKB_KEY_Greek_beta, GREEK SMALL LETTER BETA */ \ + OP(L'γ', Key_G) /* U+03b3, XKB_KEY_Greek_gamma, GREEK SMALL LETTER GAMMA */ \ + OP(L'δ', Key_D) /* U+03b4, XKB_KEY_Greek_delta, GREEK SMALL LETTER DELTA */ \ + OP(L'ε', Key_E) /* U+03b5, XKB_KEY_Greek_epsilon, GREEK SMALL LETTER EPSILON */ \ + OP(L'ζ', Key_Z) /* U+03b6, XKB_KEY_Greek_zeta, GREEK SMALL LETTER ZETA */ \ + OP(L'η', Key_H) /* U+03b7, XKB_KEY_Greek_eta, GREEK SMALL LETTER ETA */ \ + OP(L'θ', Key_U) /* U+03b8, XKB_KEY_Greek_theta, GREEK SMALL LETTER THETA */ \ + OP(L'ι', Key_I) /* U+03b9, XKB_KEY_Greek_iota, GREEK SMALL LETTER IOTA */ \ + OP(L'κ', Key_K) /* U+03ba, XKB_KEY_Greek_kappa, GREEK SMALL LETTER KAPPA */ \ + OP(L'λ', Key_L) /* U+03bb, XKB_KEY_Greek_lamda, GREEK SMALL LETTER LAMDA */ \ + OP(L'μ', Key_M) /* U+03bc, XKB_KEY_Greek_mu, GREEK SMALL LETTER MU */ \ + OP(L'ν', Key_N) /* U+03bd, XKB_KEY_Greek_nu, GREEK SMALL LETTER NU */ \ + OP(L'ξ', Key_J) /* U+03be, XKB_KEY_Greek_xi, GREEK SMALL LETTER XI */ \ + OP(L'ο', Key_O) /* U+03bf, XKB_KEY_Greek_omicron, GREEK SMALL LETTER OMICRON */ \ + OP(L'π', Key_P) /* U+03c0, XKB_KEY_Greek_pi, GREEK SMALL LETTER PI */ \ + OP(L'ρ', Key_R) /* U+03c1, XKB_KEY_Greek_rho, GREEK SMALL LETTER RHO */ \ + OP(L'ς', Key_W) /* U+03c2, XKB_KEY_Greek_finalsmallsigma, GREEK SMALL LETTER FINAL SIGMA */ \ + OP(L'σ', Key_S) /* U+03c3, XKB_KEY_Greek_sigma, GREEK SMALL LETTER SIGMA */ \ + OP(L'τ', Key_T) /* U+03c4, XKB_KEY_Greek_tau, GREEK SMALL LETTER TAU */ \ + OP(L'υ', Key_Y) /* U+03c5, XKB_KEY_Greek_upsilon, GREEK SMALL LETTER UPSILON */ \ + OP(L'φ', Key_F) /* U+03c6, XKB_KEY_Greek_phi, GREEK SMALL LETTER PHI */ \ + OP(L'χ', Key_X) /* U+03c7, XKB_KEY_Greek_chi, GREEK SMALL LETTER CHI */ \ + OP(L'ψ', Key_C) /* U+03c8, XKB_KEY_Greek_psi, GREEK SMALL LETTER PSI */ \ + OP(L'ω', Key_V) /* U+03c9, XKB_KEY_Greek_omega, GREEK SMALL LETTER OMEGA */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Greek_ALPHA, LSHIFT(Key_A)) \ + OP(XKB_KEY_Greek_BETA, LSHIFT(Key_B)) \ + OP(XKB_KEY_Greek_CHI, LSHIFT(Key_X)) \ + OP(XKB_KEY_Greek_DELTA, LSHIFT(Key_D)) \ + OP(XKB_KEY_Greek_EPSILON, LSHIFT(Key_E)) \ + OP(XKB_KEY_Greek_ETA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Greek_GAMMA, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_IOTA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Greek_KAPPA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Greek_LAMDA, LSHIFT(Key_L)) \ + OP(XKB_KEY_Greek_MU, LSHIFT(Key_M)) \ + OP(XKB_KEY_Greek_NU, LSHIFT(Key_N)) \ + OP(XKB_KEY_Greek_OMEGA, LSHIFT(Key_V)) \ + OP(XKB_KEY_Greek_OMICRON, LSHIFT(Key_O)) \ + OP(XKB_KEY_Greek_PHI, LSHIFT(Key_F)) \ + OP(XKB_KEY_Greek_PI, LSHIFT(Key_P)) \ + OP(XKB_KEY_Greek_PSI, LSHIFT(Key_C)) \ + OP(XKB_KEY_Greek_RHO, LSHIFT(Key_R)) \ + OP(XKB_KEY_Greek_SIGMA, LSHIFT(Key_W)) \ + OP(XKB_KEY_Greek_TAU, LSHIFT(Key_T)) \ + OP(XKB_KEY_Greek_THETA, LSHIFT(Key_U)) \ + OP(XKB_KEY_Greek_UPSILON, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Greek_XI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Greek_ZETA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Greek_alpha, Key_A) \ + OP(XKB_KEY_Greek_beta, Key_B) \ + OP(XKB_KEY_Greek_chi, Key_X) \ + OP(XKB_KEY_Greek_delta, Key_D) \ + OP(XKB_KEY_Greek_epsilon, Key_E) \ + OP(XKB_KEY_Greek_eta, Key_H) \ + OP(XKB_KEY_Greek_finalsmallsigma, Key_W) \ + OP(XKB_KEY_Greek_gamma, Key_G) \ + OP(XKB_KEY_Greek_iota, Key_I) \ + OP(XKB_KEY_Greek_kappa, Key_K) \ + OP(XKB_KEY_Greek_lamda, Key_L) \ + OP(XKB_KEY_Greek_mu, Key_M) \ + OP(XKB_KEY_Greek_nu, Key_N) \ + OP(XKB_KEY_Greek_omega, Key_V) \ + OP(XKB_KEY_Greek_omicron, Key_O) \ + OP(XKB_KEY_Greek_phi, Key_F) \ + OP(XKB_KEY_Greek_pi, Key_P) \ + OP(XKB_KEY_Greek_psi, Key_C) \ + OP(XKB_KEY_Greek_rho, Key_R) \ + OP(XKB_KEY_Greek_sigma, Key_S) \ + OP(XKB_KEY_Greek_tau, Key_T) \ + OP(XKB_KEY_Greek_theta, Key_U) \ + OP(XKB_KEY_Greek_upsilon, Key_Y) \ + OP(XKB_KEY_Greek_xi, Key_J) \ + OP(XKB_KEY_Greek_zeta, Key_Z) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Q)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_dead_abovecomma, LSHIFT(Key_Semicolon)) /* XKB_KEY_dead_abovecomma */ \ + OP(XKB_KEY_dead_abovereversedcomma, LSHIFT(Key_Quote)) /* XKB_KEY_dead_abovereversedcomma */ \ + OP(XKB_KEY_dead_acute, Key_Semicolon) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_RightBracket)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, Key_Quote) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_iota, Key_RightBracket) /* XKB_KEY_dead_iota */ \ + OP(XKB_KEY_dead_macron, RALT(Key_LeftBracket)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, Key_LeftBracket) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_0)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_guillemotright, RALT(Key_Period)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Q)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(Key_Minus)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_semicolon, Key_Q) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace gr { +namespace polytonic { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace polytonic +} // namespace gr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/gr/simple/keymap.h b/src/kaleidoscope/host_keymap/linux/gr/simple/keymap.h new file mode 100644 index 0000000000..1e8fe6dfd5 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/gr/simple/keymap.h @@ -0,0 +1,387 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: gr +// variant: simple + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Q) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Q) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'«', Key_NonUsBackslashAndPipe) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Α', LSHIFT(Key_A)) /* U+0391, XKB_KEY_Greek_ALPHA, GREEK CAPITAL LETTER ALPHA */ \ + OP(L'Β', LSHIFT(Key_B)) /* U+0392, XKB_KEY_Greek_BETA, GREEK CAPITAL LETTER BETA */ \ + OP(L'Γ', LSHIFT(Key_G)) /* U+0393, XKB_KEY_Greek_GAMMA, GREEK CAPITAL LETTER GAMMA */ \ + OP(L'Δ', LSHIFT(Key_D)) /* U+0394, XKB_KEY_Greek_DELTA, GREEK CAPITAL LETTER DELTA */ \ + OP(L'Ε', LSHIFT(Key_E)) /* U+0395, XKB_KEY_Greek_EPSILON, GREEK CAPITAL LETTER EPSILON */ \ + OP(L'Ζ', LSHIFT(Key_Z)) /* U+0396, XKB_KEY_Greek_ZETA, GREEK CAPITAL LETTER ZETA */ \ + OP(L'Η', LSHIFT(Key_H)) /* U+0397, XKB_KEY_Greek_ETA, GREEK CAPITAL LETTER ETA */ \ + OP(L'Θ', LSHIFT(Key_U)) /* U+0398, XKB_KEY_Greek_THETA, GREEK CAPITAL LETTER THETA */ \ + OP(L'Ι', LSHIFT(Key_I)) /* U+0399, XKB_KEY_Greek_IOTA, GREEK CAPITAL LETTER IOTA */ \ + OP(L'Κ', LSHIFT(Key_K)) /* U+039a, XKB_KEY_Greek_KAPPA, GREEK CAPITAL LETTER KAPPA */ \ + OP(L'Λ', LSHIFT(Key_L)) /* U+039b, XKB_KEY_Greek_LAMDA, GREEK CAPITAL LETTER LAMDA */ \ + OP(L'Μ', LSHIFT(Key_M)) /* U+039c, XKB_KEY_Greek_MU, GREEK CAPITAL LETTER MU */ \ + OP(L'Ν', LSHIFT(Key_N)) /* U+039d, XKB_KEY_Greek_NU, GREEK CAPITAL LETTER NU */ \ + OP(L'Ξ', LSHIFT(Key_J)) /* U+039e, XKB_KEY_Greek_XI, GREEK CAPITAL LETTER XI */ \ + OP(L'Ο', LSHIFT(Key_O)) /* U+039f, XKB_KEY_Greek_OMICRON, GREEK CAPITAL LETTER OMICRON */ \ + OP(L'Π', LSHIFT(Key_P)) /* U+03a0, XKB_KEY_Greek_PI, GREEK CAPITAL LETTER PI */ \ + OP(L'Ρ', LSHIFT(Key_R)) /* U+03a1, XKB_KEY_Greek_RHO, GREEK CAPITAL LETTER RHO */ \ + OP(L'Σ', LSHIFT(Key_W)) /* U+03a3, XKB_KEY_Greek_SIGMA, GREEK CAPITAL LETTER SIGMA */ \ + OP(L'Τ', LSHIFT(Key_T)) /* U+03a4, XKB_KEY_Greek_TAU, GREEK CAPITAL LETTER TAU */ \ + OP(L'Υ', LSHIFT(Key_Y)) /* U+03a5, XKB_KEY_Greek_UPSILON, GREEK CAPITAL LETTER UPSILON */ \ + OP(L'Φ', LSHIFT(Key_F)) /* U+03a6, XKB_KEY_Greek_PHI, GREEK CAPITAL LETTER PHI */ \ + OP(L'Χ', LSHIFT(Key_X)) /* U+03a7, XKB_KEY_Greek_CHI, GREEK CAPITAL LETTER CHI */ \ + OP(L'Ψ', LSHIFT(Key_C)) /* U+03a8, XKB_KEY_Greek_PSI, GREEK CAPITAL LETTER PSI */ \ + OP(L'Ω', LSHIFT(Key_V)) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'α', Key_A) /* U+03b1, XKB_KEY_Greek_alpha, GREEK SMALL LETTER ALPHA */ \ + OP(L'β', Key_B) /* U+03b2, XKB_KEY_Greek_beta, GREEK SMALL LETTER BETA */ \ + OP(L'γ', Key_G) /* U+03b3, XKB_KEY_Greek_gamma, GREEK SMALL LETTER GAMMA */ \ + OP(L'δ', Key_D) /* U+03b4, XKB_KEY_Greek_delta, GREEK SMALL LETTER DELTA */ \ + OP(L'ε', Key_E) /* U+03b5, XKB_KEY_Greek_epsilon, GREEK SMALL LETTER EPSILON */ \ + OP(L'ζ', Key_Z) /* U+03b6, XKB_KEY_Greek_zeta, GREEK SMALL LETTER ZETA */ \ + OP(L'η', Key_H) /* U+03b7, XKB_KEY_Greek_eta, GREEK SMALL LETTER ETA */ \ + OP(L'θ', Key_U) /* U+03b8, XKB_KEY_Greek_theta, GREEK SMALL LETTER THETA */ \ + OP(L'ι', Key_I) /* U+03b9, XKB_KEY_Greek_iota, GREEK SMALL LETTER IOTA */ \ + OP(L'κ', Key_K) /* U+03ba, XKB_KEY_Greek_kappa, GREEK SMALL LETTER KAPPA */ \ + OP(L'λ', Key_L) /* U+03bb, XKB_KEY_Greek_lamda, GREEK SMALL LETTER LAMDA */ \ + OP(L'μ', Key_M) /* U+03bc, XKB_KEY_Greek_mu, GREEK SMALL LETTER MU */ \ + OP(L'ν', Key_N) /* U+03bd, XKB_KEY_Greek_nu, GREEK SMALL LETTER NU */ \ + OP(L'ξ', Key_J) /* U+03be, XKB_KEY_Greek_xi, GREEK SMALL LETTER XI */ \ + OP(L'ο', Key_O) /* U+03bf, XKB_KEY_Greek_omicron, GREEK SMALL LETTER OMICRON */ \ + OP(L'π', Key_P) /* U+03c0, XKB_KEY_Greek_pi, GREEK SMALL LETTER PI */ \ + OP(L'ρ', Key_R) /* U+03c1, XKB_KEY_Greek_rho, GREEK SMALL LETTER RHO */ \ + OP(L'ς', Key_W) /* U+03c2, XKB_KEY_Greek_finalsmallsigma, GREEK SMALL LETTER FINAL SIGMA */ \ + OP(L'σ', Key_S) /* U+03c3, XKB_KEY_Greek_sigma, GREEK SMALL LETTER SIGMA */ \ + OP(L'τ', Key_T) /* U+03c4, XKB_KEY_Greek_tau, GREEK SMALL LETTER TAU */ \ + OP(L'υ', Key_Y) /* U+03c5, XKB_KEY_Greek_upsilon, GREEK SMALL LETTER UPSILON */ \ + OP(L'φ', Key_F) /* U+03c6, XKB_KEY_Greek_phi, GREEK SMALL LETTER PHI */ \ + OP(L'χ', Key_X) /* U+03c7, XKB_KEY_Greek_chi, GREEK SMALL LETTER CHI */ \ + OP(L'ψ', Key_C) /* U+03c8, XKB_KEY_Greek_psi, GREEK SMALL LETTER PSI */ \ + OP(L'ω', Key_V) /* U+03c9, XKB_KEY_Greek_omega, GREEK SMALL LETTER OMEGA */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Greek_ALPHA, LSHIFT(Key_A)) \ + OP(XKB_KEY_Greek_BETA, LSHIFT(Key_B)) \ + OP(XKB_KEY_Greek_CHI, LSHIFT(Key_X)) \ + OP(XKB_KEY_Greek_DELTA, LSHIFT(Key_D)) \ + OP(XKB_KEY_Greek_EPSILON, LSHIFT(Key_E)) \ + OP(XKB_KEY_Greek_ETA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Greek_GAMMA, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_IOTA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Greek_KAPPA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Greek_LAMDA, LSHIFT(Key_L)) \ + OP(XKB_KEY_Greek_MU, LSHIFT(Key_M)) \ + OP(XKB_KEY_Greek_NU, LSHIFT(Key_N)) \ + OP(XKB_KEY_Greek_OMEGA, LSHIFT(Key_V)) \ + OP(XKB_KEY_Greek_OMICRON, LSHIFT(Key_O)) \ + OP(XKB_KEY_Greek_PHI, LSHIFT(Key_F)) \ + OP(XKB_KEY_Greek_PI, LSHIFT(Key_P)) \ + OP(XKB_KEY_Greek_PSI, LSHIFT(Key_C)) \ + OP(XKB_KEY_Greek_RHO, LSHIFT(Key_R)) \ + OP(XKB_KEY_Greek_SIGMA, LSHIFT(Key_W)) \ + OP(XKB_KEY_Greek_TAU, LSHIFT(Key_T)) \ + OP(XKB_KEY_Greek_THETA, LSHIFT(Key_U)) \ + OP(XKB_KEY_Greek_UPSILON, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Greek_XI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Greek_ZETA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Greek_alpha, Key_A) \ + OP(XKB_KEY_Greek_beta, Key_B) \ + OP(XKB_KEY_Greek_chi, Key_X) \ + OP(XKB_KEY_Greek_delta, Key_D) \ + OP(XKB_KEY_Greek_epsilon, Key_E) \ + OP(XKB_KEY_Greek_eta, Key_H) \ + OP(XKB_KEY_Greek_finalsmallsigma, Key_W) \ + OP(XKB_KEY_Greek_gamma, Key_G) \ + OP(XKB_KEY_Greek_iota, Key_I) \ + OP(XKB_KEY_Greek_kappa, Key_K) \ + OP(XKB_KEY_Greek_lamda, Key_L) \ + OP(XKB_KEY_Greek_mu, Key_M) \ + OP(XKB_KEY_Greek_nu, Key_N) \ + OP(XKB_KEY_Greek_omega, Key_V) \ + OP(XKB_KEY_Greek_omicron, Key_O) \ + OP(XKB_KEY_Greek_phi, Key_F) \ + OP(XKB_KEY_Greek_pi, Key_P) \ + OP(XKB_KEY_Greek_psi, Key_C) \ + OP(XKB_KEY_Greek_rho, Key_R) \ + OP(XKB_KEY_Greek_sigma, Key_S) \ + OP(XKB_KEY_Greek_tau, Key_T) \ + OP(XKB_KEY_Greek_theta, Key_U) \ + OP(XKB_KEY_Greek_upsilon, Key_Y) \ + OP(XKB_KEY_Greek_xi, Key_J) \ + OP(XKB_KEY_Greek_zeta, Key_Z) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_colon, LSHIFT(Key_Q)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dead_acute, Key_Semicolon) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_Semicolon)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_semicolon, Key_Q) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace gr { +namespace simple { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace simple +} // namespace gr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/gr/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/gr/standard/keymap.h new file mode 100644 index 0000000000..bff14aaf5b --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/gr/standard/keymap.h @@ -0,0 +1,454 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: gr +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Q) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Q) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', Key_NonUsBackslashAndPipe) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_0)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'·', RALT(Key_Q)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_Period)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_2)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_4))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'ʹ', RALT(Key_N)) \ + OP(L'͵', RALT(LSHIFT(Key_N))) \ + OP(L'ͻ', RALT(Key_I)) \ + OP(L'ͼ', RALT(Key_J)) \ + OP(L'ͽ', RALT(Key_Z)) \ + OP(L'Α', LSHIFT(Key_A)) /* U+0391, XKB_KEY_Greek_ALPHA, GREEK CAPITAL LETTER ALPHA */ \ + OP(L'Β', LSHIFT(Key_B)) /* U+0392, XKB_KEY_Greek_BETA, GREEK CAPITAL LETTER BETA */ \ + OP(L'Γ', LSHIFT(Key_G)) /* U+0393, XKB_KEY_Greek_GAMMA, GREEK CAPITAL LETTER GAMMA */ \ + OP(L'Δ', LSHIFT(Key_D)) /* U+0394, XKB_KEY_Greek_DELTA, GREEK CAPITAL LETTER DELTA */ \ + OP(L'Ε', LSHIFT(Key_E)) /* U+0395, XKB_KEY_Greek_EPSILON, GREEK CAPITAL LETTER EPSILON */ \ + OP(L'Ζ', LSHIFT(Key_Z)) /* U+0396, XKB_KEY_Greek_ZETA, GREEK CAPITAL LETTER ZETA */ \ + OP(L'Η', LSHIFT(Key_H)) /* U+0397, XKB_KEY_Greek_ETA, GREEK CAPITAL LETTER ETA */ \ + OP(L'Θ', LSHIFT(Key_U)) /* U+0398, XKB_KEY_Greek_THETA, GREEK CAPITAL LETTER THETA */ \ + OP(L'Ι', LSHIFT(Key_I)) /* U+0399, XKB_KEY_Greek_IOTA, GREEK CAPITAL LETTER IOTA */ \ + OP(L'Κ', LSHIFT(Key_K)) /* U+039a, XKB_KEY_Greek_KAPPA, GREEK CAPITAL LETTER KAPPA */ \ + OP(L'Λ', LSHIFT(Key_L)) /* U+039b, XKB_KEY_Greek_LAMDA, GREEK CAPITAL LETTER LAMDA */ \ + OP(L'Μ', LSHIFT(Key_M)) /* U+039c, XKB_KEY_Greek_MU, GREEK CAPITAL LETTER MU */ \ + OP(L'Ν', LSHIFT(Key_N)) /* U+039d, XKB_KEY_Greek_NU, GREEK CAPITAL LETTER NU */ \ + OP(L'Ξ', LSHIFT(Key_J)) /* U+039e, XKB_KEY_Greek_XI, GREEK CAPITAL LETTER XI */ \ + OP(L'Ο', LSHIFT(Key_O)) /* U+039f, XKB_KEY_Greek_OMICRON, GREEK CAPITAL LETTER OMICRON */ \ + OP(L'Π', LSHIFT(Key_P)) /* U+03a0, XKB_KEY_Greek_PI, GREEK CAPITAL LETTER PI */ \ + OP(L'Ρ', LSHIFT(Key_R)) /* U+03a1, XKB_KEY_Greek_RHO, GREEK CAPITAL LETTER RHO */ \ + OP(L'Σ', LSHIFT(Key_W)) /* U+03a3, XKB_KEY_Greek_SIGMA, GREEK CAPITAL LETTER SIGMA */ \ + OP(L'Τ', LSHIFT(Key_T)) /* U+03a4, XKB_KEY_Greek_TAU, GREEK CAPITAL LETTER TAU */ \ + OP(L'Υ', LSHIFT(Key_Y)) /* U+03a5, XKB_KEY_Greek_UPSILON, GREEK CAPITAL LETTER UPSILON */ \ + OP(L'Φ', LSHIFT(Key_F)) /* U+03a6, XKB_KEY_Greek_PHI, GREEK CAPITAL LETTER PHI */ \ + OP(L'Χ', LSHIFT(Key_X)) /* U+03a7, XKB_KEY_Greek_CHI, GREEK CAPITAL LETTER CHI */ \ + OP(L'Ψ', LSHIFT(Key_C)) /* U+03a8, XKB_KEY_Greek_PSI, GREEK CAPITAL LETTER PSI */ \ + OP(L'Ω', LSHIFT(Key_V)) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'α', Key_A) /* U+03b1, XKB_KEY_Greek_alpha, GREEK SMALL LETTER ALPHA */ \ + OP(L'β', Key_B) /* U+03b2, XKB_KEY_Greek_beta, GREEK SMALL LETTER BETA */ \ + OP(L'γ', Key_G) /* U+03b3, XKB_KEY_Greek_gamma, GREEK SMALL LETTER GAMMA */ \ + OP(L'δ', Key_D) /* U+03b4, XKB_KEY_Greek_delta, GREEK SMALL LETTER DELTA */ \ + OP(L'ε', Key_E) /* U+03b5, XKB_KEY_Greek_epsilon, GREEK SMALL LETTER EPSILON */ \ + OP(L'ζ', Key_Z) /* U+03b6, XKB_KEY_Greek_zeta, GREEK SMALL LETTER ZETA */ \ + OP(L'η', Key_H) /* U+03b7, XKB_KEY_Greek_eta, GREEK SMALL LETTER ETA */ \ + OP(L'θ', Key_U) /* U+03b8, XKB_KEY_Greek_theta, GREEK SMALL LETTER THETA */ \ + OP(L'ι', Key_I) /* U+03b9, XKB_KEY_Greek_iota, GREEK SMALL LETTER IOTA */ \ + OP(L'κ', Key_K) /* U+03ba, XKB_KEY_Greek_kappa, GREEK SMALL LETTER KAPPA */ \ + OP(L'λ', Key_L) /* U+03bb, XKB_KEY_Greek_lamda, GREEK SMALL LETTER LAMDA */ \ + OP(L'μ', Key_M) /* U+03bc, XKB_KEY_Greek_mu, GREEK SMALL LETTER MU */ \ + OP(L'ν', Key_N) /* U+03bd, XKB_KEY_Greek_nu, GREEK SMALL LETTER NU */ \ + OP(L'ξ', Key_J) /* U+03be, XKB_KEY_Greek_xi, GREEK SMALL LETTER XI */ \ + OP(L'ο', Key_O) /* U+03bf, XKB_KEY_Greek_omicron, GREEK SMALL LETTER OMICRON */ \ + OP(L'π', Key_P) /* U+03c0, XKB_KEY_Greek_pi, GREEK SMALL LETTER PI */ \ + OP(L'ρ', Key_R) /* U+03c1, XKB_KEY_Greek_rho, GREEK SMALL LETTER RHO */ \ + OP(L'ς', Key_W) /* U+03c2, XKB_KEY_Greek_finalsmallsigma, GREEK SMALL LETTER FINAL SIGMA */ \ + OP(L'σ', Key_S) /* U+03c3, XKB_KEY_Greek_sigma, GREEK SMALL LETTER SIGMA */ \ + OP(L'τ', Key_T) /* U+03c4, XKB_KEY_Greek_tau, GREEK SMALL LETTER TAU */ \ + OP(L'υ', Key_Y) /* U+03c5, XKB_KEY_Greek_upsilon, GREEK SMALL LETTER UPSILON */ \ + OP(L'φ', Key_F) /* U+03c6, XKB_KEY_Greek_phi, GREEK SMALL LETTER PHI */ \ + OP(L'χ', Key_X) /* U+03c7, XKB_KEY_Greek_chi, GREEK SMALL LETTER CHI */ \ + OP(L'ψ', Key_C) /* U+03c8, XKB_KEY_Greek_psi, GREEK SMALL LETTER PSI */ \ + OP(L'ω', Key_V) /* U+03c9, XKB_KEY_Greek_omega, GREEK SMALL LETTER OMEGA */ \ + OP(L'ϐ', RALT(Key_B)) \ + OP(L'ϑ', RALT(Key_U)) \ + OP(L'ϕ', RALT(Key_F)) \ + OP(L'ϖ', RALT(Key_V)) \ + OP(L'Ϛ', RALT(LSHIFT(Key_W))) \ + OP(L'ϛ', RALT(Key_W)) \ + OP(L'Ϝ', RALT(LSHIFT(Key_G))) \ + OP(L'ϝ', RALT(Key_G)) \ + OP(L'Ϟ', RALT(LSHIFT(Key_K))) \ + OP(L'ϟ', RALT(Key_K)) \ + OP(L'Ϡ', RALT(LSHIFT(Key_P))) \ + OP(L'ϡ', RALT(Key_P)) \ + OP(L'ϰ', RALT(Key_7)) \ + OP(L'ϱ', RALT(LSHIFT(Key_R))) \ + OP(L'ϲ', RALT(Key_L)) \ + OP(L'ϴ', RALT(LSHIFT(Key_U))) \ + OP(L'Ϲ', RALT(LSHIFT(Key_L))) \ + OP(L'Ϻ', RALT(LSHIFT(Key_M))) \ + OP(L'ϻ', RALT(Key_M)) \ + OP(L'Ͻ', RALT(LSHIFT(Key_I))) \ + OP(L'Ͼ', RALT(LSHIFT(Key_J))) \ + OP(L'Ͽ', RALT(LSHIFT(Key_Z))) \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(LSHIFT(Key_X))) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_D))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_X)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_D)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Greek_ALPHA, LSHIFT(Key_A)) \ + OP(XKB_KEY_Greek_BETA, LSHIFT(Key_B)) \ + OP(XKB_KEY_Greek_CHI, LSHIFT(Key_X)) \ + OP(XKB_KEY_Greek_DELTA, LSHIFT(Key_D)) \ + OP(XKB_KEY_Greek_EPSILON, LSHIFT(Key_E)) \ + OP(XKB_KEY_Greek_ETA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Greek_GAMMA, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_IOTA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Greek_KAPPA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Greek_LAMDA, LSHIFT(Key_L)) \ + OP(XKB_KEY_Greek_MU, LSHIFT(Key_M)) \ + OP(XKB_KEY_Greek_NU, LSHIFT(Key_N)) \ + OP(XKB_KEY_Greek_OMEGA, LSHIFT(Key_V)) \ + OP(XKB_KEY_Greek_OMICRON, LSHIFT(Key_O)) \ + OP(XKB_KEY_Greek_PHI, LSHIFT(Key_F)) \ + OP(XKB_KEY_Greek_PI, LSHIFT(Key_P)) \ + OP(XKB_KEY_Greek_PSI, LSHIFT(Key_C)) \ + OP(XKB_KEY_Greek_RHO, LSHIFT(Key_R)) \ + OP(XKB_KEY_Greek_SIGMA, LSHIFT(Key_W)) \ + OP(XKB_KEY_Greek_TAU, LSHIFT(Key_T)) \ + OP(XKB_KEY_Greek_THETA, LSHIFT(Key_U)) \ + OP(XKB_KEY_Greek_UPSILON, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Greek_XI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Greek_ZETA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Greek_alpha, Key_A) \ + OP(XKB_KEY_Greek_beta, Key_B) \ + OP(XKB_KEY_Greek_chi, Key_X) \ + OP(XKB_KEY_Greek_delta, Key_D) \ + OP(XKB_KEY_Greek_epsilon, Key_E) \ + OP(XKB_KEY_Greek_eta, Key_H) \ + OP(XKB_KEY_Greek_finalsmallsigma, Key_W) \ + OP(XKB_KEY_Greek_gamma, Key_G) \ + OP(XKB_KEY_Greek_iota, Key_I) \ + OP(XKB_KEY_Greek_kappa, Key_K) \ + OP(XKB_KEY_Greek_lamda, Key_L) \ + OP(XKB_KEY_Greek_mu, Key_M) \ + OP(XKB_KEY_Greek_nu, Key_N) \ + OP(XKB_KEY_Greek_omega, Key_V) \ + OP(XKB_KEY_Greek_omicron, Key_O) \ + OP(XKB_KEY_Greek_phi, Key_F) \ + OP(XKB_KEY_Greek_pi, Key_P) \ + OP(XKB_KEY_Greek_psi, Key_C) \ + OP(XKB_KEY_Greek_rho, Key_R) \ + OP(XKB_KEY_Greek_sigma, Key_S) \ + OP(XKB_KEY_Greek_tau, Key_T) \ + OP(XKB_KEY_Greek_theta, Key_U) \ + OP(XKB_KEY_Greek_upsilon, Key_Y) \ + OP(XKB_KEY_Greek_xi, Key_J) \ + OP(XKB_KEY_Greek_zeta, Key_Z) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Q)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_dead_abovecomma, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_abovecomma */ \ + OP(XKB_KEY_dead_abovereversedcomma, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_abovereversedcomma */ \ + OP(XKB_KEY_dead_acute, Key_Semicolon) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_Semicolon)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_Quote)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_iota, RALT(Key_RightBracket)) /* XKB_KEY_dead_iota */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_LeftBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_0)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_D)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_guillemotright, RALT(Key_Period)) \ + OP(XKB_KEY_leftarrow, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_onehalf, RALT(Key_2)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Q)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightarrow, RALT(Key_X)) \ + OP(XKB_KEY_semicolon, Key_Q) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_D))) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace gr { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace gr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/gr/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/gr/sun_type6/keymap.h new file mode 100644 index 0000000000..343a91b26f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/gr/sun_type6/keymap.h @@ -0,0 +1,406 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: gr +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Q) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Q) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(Key_NonUsPound)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', Key_NonUsBackslashAndPipe) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_0)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_Minus)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'·', RALT(Key_Q)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_Backtick)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'Α', LSHIFT(Key_A)) /* U+0391, XKB_KEY_Greek_ALPHA, GREEK CAPITAL LETTER ALPHA */ \ + OP(L'Β', LSHIFT(Key_B)) /* U+0392, XKB_KEY_Greek_BETA, GREEK CAPITAL LETTER BETA */ \ + OP(L'Γ', LSHIFT(Key_G)) /* U+0393, XKB_KEY_Greek_GAMMA, GREEK CAPITAL LETTER GAMMA */ \ + OP(L'Δ', LSHIFT(Key_D)) /* U+0394, XKB_KEY_Greek_DELTA, GREEK CAPITAL LETTER DELTA */ \ + OP(L'Ε', LSHIFT(Key_E)) /* U+0395, XKB_KEY_Greek_EPSILON, GREEK CAPITAL LETTER EPSILON */ \ + OP(L'Ζ', LSHIFT(Key_Z)) /* U+0396, XKB_KEY_Greek_ZETA, GREEK CAPITAL LETTER ZETA */ \ + OP(L'Η', LSHIFT(Key_H)) /* U+0397, XKB_KEY_Greek_ETA, GREEK CAPITAL LETTER ETA */ \ + OP(L'Θ', LSHIFT(Key_U)) /* U+0398, XKB_KEY_Greek_THETA, GREEK CAPITAL LETTER THETA */ \ + OP(L'Ι', LSHIFT(Key_I)) /* U+0399, XKB_KEY_Greek_IOTA, GREEK CAPITAL LETTER IOTA */ \ + OP(L'Κ', LSHIFT(Key_K)) /* U+039a, XKB_KEY_Greek_KAPPA, GREEK CAPITAL LETTER KAPPA */ \ + OP(L'Λ', LSHIFT(Key_L)) /* U+039b, XKB_KEY_Greek_LAMDA, GREEK CAPITAL LETTER LAMDA */ \ + OP(L'Μ', LSHIFT(Key_M)) /* U+039c, XKB_KEY_Greek_MU, GREEK CAPITAL LETTER MU */ \ + OP(L'Ν', LSHIFT(Key_N)) /* U+039d, XKB_KEY_Greek_NU, GREEK CAPITAL LETTER NU */ \ + OP(L'Ξ', LSHIFT(Key_J)) /* U+039e, XKB_KEY_Greek_XI, GREEK CAPITAL LETTER XI */ \ + OP(L'Ο', LSHIFT(Key_O)) /* U+039f, XKB_KEY_Greek_OMICRON, GREEK CAPITAL LETTER OMICRON */ \ + OP(L'Π', LSHIFT(Key_P)) /* U+03a0, XKB_KEY_Greek_PI, GREEK CAPITAL LETTER PI */ \ + OP(L'Ρ', LSHIFT(Key_R)) /* U+03a1, XKB_KEY_Greek_RHO, GREEK CAPITAL LETTER RHO */ \ + OP(L'Σ', RALT(Key_W)) /* U+03a3, XKB_KEY_Greek_SIGMA, GREEK CAPITAL LETTER SIGMA */ \ + OP(L'Τ', LSHIFT(Key_T)) /* U+03a4, XKB_KEY_Greek_TAU, GREEK CAPITAL LETTER TAU */ \ + OP(L'Υ', LSHIFT(Key_Y)) /* U+03a5, XKB_KEY_Greek_UPSILON, GREEK CAPITAL LETTER UPSILON */ \ + OP(L'Φ', LSHIFT(Key_F)) /* U+03a6, XKB_KEY_Greek_PHI, GREEK CAPITAL LETTER PHI */ \ + OP(L'Χ', LSHIFT(Key_X)) /* U+03a7, XKB_KEY_Greek_CHI, GREEK CAPITAL LETTER CHI */ \ + OP(L'Ψ', LSHIFT(Key_C)) /* U+03a8, XKB_KEY_Greek_PSI, GREEK CAPITAL LETTER PSI */ \ + OP(L'Ω', LSHIFT(Key_V)) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'α', Key_A) /* U+03b1, XKB_KEY_Greek_alpha, GREEK SMALL LETTER ALPHA */ \ + OP(L'β', Key_B) /* U+03b2, XKB_KEY_Greek_beta, GREEK SMALL LETTER BETA */ \ + OP(L'γ', Key_G) /* U+03b3, XKB_KEY_Greek_gamma, GREEK SMALL LETTER GAMMA */ \ + OP(L'δ', Key_D) /* U+03b4, XKB_KEY_Greek_delta, GREEK SMALL LETTER DELTA */ \ + OP(L'ε', Key_E) /* U+03b5, XKB_KEY_Greek_epsilon, GREEK SMALL LETTER EPSILON */ \ + OP(L'ζ', Key_Z) /* U+03b6, XKB_KEY_Greek_zeta, GREEK SMALL LETTER ZETA */ \ + OP(L'η', Key_H) /* U+03b7, XKB_KEY_Greek_eta, GREEK SMALL LETTER ETA */ \ + OP(L'θ', Key_U) /* U+03b8, XKB_KEY_Greek_theta, GREEK SMALL LETTER THETA */ \ + OP(L'ι', Key_I) /* U+03b9, XKB_KEY_Greek_iota, GREEK SMALL LETTER IOTA */ \ + OP(L'κ', Key_K) /* U+03ba, XKB_KEY_Greek_kappa, GREEK SMALL LETTER KAPPA */ \ + OP(L'λ', Key_L) /* U+03bb, XKB_KEY_Greek_lamda, GREEK SMALL LETTER LAMDA */ \ + OP(L'μ', Key_M) /* U+03bc, XKB_KEY_Greek_mu, GREEK SMALL LETTER MU */ \ + OP(L'ν', Key_N) /* U+03bd, XKB_KEY_Greek_nu, GREEK SMALL LETTER NU */ \ + OP(L'ξ', Key_J) /* U+03be, XKB_KEY_Greek_xi, GREEK SMALL LETTER XI */ \ + OP(L'ο', Key_O) /* U+03bf, XKB_KEY_Greek_omicron, GREEK SMALL LETTER OMICRON */ \ + OP(L'π', Key_P) /* U+03c0, XKB_KEY_Greek_pi, GREEK SMALL LETTER PI */ \ + OP(L'ρ', Key_R) /* U+03c1, XKB_KEY_Greek_rho, GREEK SMALL LETTER RHO */ \ + OP(L'ς', Key_W) /* U+03c2, XKB_KEY_Greek_finalsmallsigma, GREEK SMALL LETTER FINAL SIGMA */ \ + OP(L'σ', Key_S) /* U+03c3, XKB_KEY_Greek_sigma, GREEK SMALL LETTER SIGMA */ \ + OP(L'τ', Key_T) /* U+03c4, XKB_KEY_Greek_tau, GREEK SMALL LETTER TAU */ \ + OP(L'υ', Key_Y) /* U+03c5, XKB_KEY_Greek_upsilon, GREEK SMALL LETTER UPSILON */ \ + OP(L'φ', Key_F) /* U+03c6, XKB_KEY_Greek_phi, GREEK SMALL LETTER PHI */ \ + OP(L'χ', Key_X) /* U+03c7, XKB_KEY_Greek_chi, GREEK SMALL LETTER CHI */ \ + OP(L'ψ', Key_C) /* U+03c8, XKB_KEY_Greek_psi, GREEK SMALL LETTER PSI */ \ + OP(L'ω', Key_V) /* U+03c9, XKB_KEY_Greek_omega, GREEK SMALL LETTER OMEGA */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Greek_ALPHA, LSHIFT(Key_A)) \ + OP(XKB_KEY_Greek_BETA, LSHIFT(Key_B)) \ + OP(XKB_KEY_Greek_CHI, LSHIFT(Key_X)) \ + OP(XKB_KEY_Greek_DELTA, LSHIFT(Key_D)) \ + OP(XKB_KEY_Greek_EPSILON, LSHIFT(Key_E)) \ + OP(XKB_KEY_Greek_ETA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Greek_GAMMA, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_IOTA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Greek_KAPPA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Greek_LAMDA, LSHIFT(Key_L)) \ + OP(XKB_KEY_Greek_MU, LSHIFT(Key_M)) \ + OP(XKB_KEY_Greek_NU, LSHIFT(Key_N)) \ + OP(XKB_KEY_Greek_OMEGA, LSHIFT(Key_V)) \ + OP(XKB_KEY_Greek_OMICRON, LSHIFT(Key_O)) \ + OP(XKB_KEY_Greek_PHI, LSHIFT(Key_F)) \ + OP(XKB_KEY_Greek_PI, LSHIFT(Key_P)) \ + OP(XKB_KEY_Greek_PSI, LSHIFT(Key_C)) \ + OP(XKB_KEY_Greek_RHO, LSHIFT(Key_R)) \ + OP(XKB_KEY_Greek_SIGMA, RALT(Key_W)) \ + OP(XKB_KEY_Greek_TAU, LSHIFT(Key_T)) \ + OP(XKB_KEY_Greek_THETA, LSHIFT(Key_U)) \ + OP(XKB_KEY_Greek_UPSILON, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Greek_XI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Greek_ZETA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Greek_alpha, Key_A) \ + OP(XKB_KEY_Greek_beta, Key_B) \ + OP(XKB_KEY_Greek_chi, Key_X) \ + OP(XKB_KEY_Greek_delta, Key_D) \ + OP(XKB_KEY_Greek_epsilon, Key_E) \ + OP(XKB_KEY_Greek_eta, Key_H) \ + OP(XKB_KEY_Greek_finalsmallsigma, Key_W) \ + OP(XKB_KEY_Greek_gamma, Key_G) \ + OP(XKB_KEY_Greek_iota, Key_I) \ + OP(XKB_KEY_Greek_kappa, Key_K) \ + OP(XKB_KEY_Greek_lamda, Key_L) \ + OP(XKB_KEY_Greek_mu, Key_M) \ + OP(XKB_KEY_Greek_nu, Key_N) \ + OP(XKB_KEY_Greek_omega, Key_V) \ + OP(XKB_KEY_Greek_omicron, Key_O) \ + OP(XKB_KEY_Greek_phi, Key_F) \ + OP(XKB_KEY_Greek_pi, Key_P) \ + OP(XKB_KEY_Greek_psi, Key_C) \ + OP(XKB_KEY_Greek_rho, Key_R) \ + OP(XKB_KEY_Greek_sigma, Key_S) \ + OP(XKB_KEY_Greek_tau, Key_T) \ + OP(XKB_KEY_Greek_theta, Key_U) \ + OP(XKB_KEY_Greek_upsilon, Key_Y) \ + OP(XKB_KEY_Greek_xi, Key_J) \ + OP(XKB_KEY_Greek_zeta, Key_Z) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Q)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_dead_acute, Key_Semicolon) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_Semicolon)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_degree, RALT(Key_0)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_onehalf, RALT(Key_Backtick)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Q)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(Key_Minus)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_semicolon, Key_Q) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace gr { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace gr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/hr/alternatequotes/keymap.h b/src/kaleidoscope/host_keymap/linux/hr/alternatequotes/keymap.h new file mode 100644 index 0000000000..acdb5b4dd0 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/hr/alternatequotes/keymap.h @@ -0,0 +1,567 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: hr +// variant: alternatequotes + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_D)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_S)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ć', LSHIFT(Key_Quote)) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', Key_Quote) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', LSHIFT(Key_Semicolon)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Semicolon) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_RightBracket)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_RightBracket) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Š', LSHIFT(Key_LeftBracket)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_LeftBracket) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ž', LSHIFT(Key_NonUsPound)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_NonUsPound) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, Key_Quote) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ccaron, Key_Semicolon) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_D)) \ + OP(XKB_KEY_guillemotright, RALT(Key_S)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_LeftBracket) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + OP(XKB_KEY_zcaron, Key_NonUsPound) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace hr { +namespace alternatequotes { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace alternatequotes +} // namespace hr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/hr/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/hr/standard/keymap.h new file mode 100644 index 0000000000..d3a5c76088 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/hr/standard/keymap.h @@ -0,0 +1,568 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: hr +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(LSHIFT(Key_D))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_5)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_S))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ć', LSHIFT(Key_Quote)) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', Key_Quote) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', LSHIFT(Key_Semicolon)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Semicolon) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_RightBracket)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_RightBracket) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Š', LSHIFT(Key_LeftBracket)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_LeftBracket) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ž', LSHIFT(Key_NonUsPound)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_NonUsPound) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_D)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_S)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_1)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, Key_Quote) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ccaron, Key_Semicolon) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_5))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_5)) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_S)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_D)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_LeftBracket) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + OP(XKB_KEY_zcaron, Key_NonUsPound) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace hr { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace hr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/hr/unicode/keymap.h b/src/kaleidoscope/host_keymap/linux/hr/unicode/keymap.h new file mode 100644 index 0000000000..e427e90e83 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/hr/unicode/keymap.h @@ -0,0 +1,554 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: hr +// variant: unicode + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(LSHIFT(Key_D))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_S))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ć', LSHIFT(Key_Quote)) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', Key_Quote) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', LSHIFT(Key_Semicolon)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Semicolon) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_RightBracket)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_RightBracket) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Š', LSHIFT(Key_LeftBracket)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_LeftBracket) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ž', LSHIFT(Key_NonUsPound)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_NonUsPound) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'DŽ', RALT(LSHIFT(Key_X))) \ + OP(L'Dž', LSHIFT(Key_X)) \ + OP(L'dž', Key_X) \ + OP(L'LJ', RALT(LSHIFT(Key_Q))) \ + OP(L'Lj', LSHIFT(Key_Q)) \ + OP(L'lj', Key_Q) \ + OP(L'NJ', RALT(LSHIFT(Key_W))) \ + OP(L'Nj', LSHIFT(Key_W)) \ + OP(L'nj', Key_W) \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_D)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_S)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, Key_Quote) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ccaron, Key_Semicolon) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_S)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_D)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_LeftBracket) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + OP(XKB_KEY_zcaron, Key_NonUsPound) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace hr { +namespace unicode { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace unicode +} // namespace hr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/hr/unicodeus/keymap.h b/src/kaleidoscope/host_keymap/linux/hr/unicodeus/keymap.h new file mode 100644 index 0000000000..fdf753369e --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/hr/unicodeus/keymap.h @@ -0,0 +1,554 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: hr +// variant: unicodeus + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(LSHIFT(Key_D))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_S))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ć', LSHIFT(Key_Quote)) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', Key_Quote) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', LSHIFT(Key_Semicolon)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Semicolon) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_RightBracket)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_RightBracket) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Š', LSHIFT(Key_LeftBracket)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_LeftBracket) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ž', LSHIFT(Key_Y)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_Y) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'DŽ', RALT(LSHIFT(Key_X))) \ + OP(L'Dž', LSHIFT(Key_X)) \ + OP(L'dž', Key_X) \ + OP(L'LJ', RALT(LSHIFT(Key_Q))) \ + OP(L'Lj', LSHIFT(Key_Q)) \ + OP(L'lj', Key_Q) \ + OP(L'NJ', RALT(LSHIFT(Key_W))) \ + OP(L'Nj', LSHIFT(Key_W)) \ + OP(L'nj', Key_W) \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_D)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_S)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, Key_Quote) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ccaron, Key_Semicolon) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_S)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_D)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_LeftBracket) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace hr { +namespace unicodeus { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace unicodeus +} // namespace hr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/hr/us/keymap.h b/src/kaleidoscope/host_keymap/linux/hr/us/keymap.h new file mode 100644 index 0000000000..b9a023e664 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/hr/us/keymap.h @@ -0,0 +1,468 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: hr +// variant: us + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_M)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'Ć', RALT(LSHIFT(Key_Quote))) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', RALT(Key_Quote)) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', RALT(LSHIFT(Key_Semicolon))) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', RALT(Key_Semicolon)) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', RALT(LSHIFT(Key_RightBracket))) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_RightBracket)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Š', RALT(LSHIFT(Key_LeftBracket))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_LeftBracket)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ž', RALT(LSHIFT(Key_NonUsPound))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_NonUsPound)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, RALT(Key_Quote)) \ + OP(XKB_KEY_ccaron, RALT(Key_Semicolon)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_dstroke, RALT(Key_RightBracket)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_section, RALT(Key_M)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, RALT(Key_NonUsPound)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace hr { +namespace us { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace us +} // namespace hr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/hu/101_qwerty_comma_dead/keymap.h b/src/kaleidoscope/host_keymap/linux/hu/101_qwerty_comma_dead/keymap.h new file mode 100644 index 0000000000..21f47622b3 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/hu/101_qwerty_comma_dead/keymap.h @@ -0,0 +1,575 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: hu +// variant: 101_qwerty_comma_dead + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', RALT(Key_Backtick)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', RALT(Key_Backtick)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(LSHIFT(Key_Semicolon))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'´', RALT(LSHIFT(Key_9))) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'Á', LSHIFT(Key_Quote)) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(Key_E)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'É', LSHIFT(Key_Semicolon)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(Key_I)) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', LSHIFT(Key_Equals)) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', LSHIFT(Key_0)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', LSHIFT(Key_RightBracket)) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', LSHIFT(Key_Minus)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_Quote) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'é', Key_Semicolon) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_Backtick) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', Key_Equals) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', Key_0) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ú', Key_RightBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', Key_Minus) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ő', LSHIFT(Key_LeftBracket)) /* U+0150, XKB_KEY_Odoubleacute, LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'ő', Key_LeftBracket) /* U+0151, XKB_KEY_odoubleacute, LATIN SMALL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ű', LSHIFT(Key_NonUsPound)) /* U+0170, XKB_KEY_Udoubleacute, LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ű', Key_NonUsPound) /* U+0171, XKB_KEY_udoubleacute, LATIN SMALL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(Key_Y)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_P)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_O)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_U)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_Backtick)) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Adiaeresis, RALT(Key_E)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_U)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(Key_I)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_0)) \ + OP(XKB_KEY_Odoubleacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Udoubleacute, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_Quote) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_acute, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, RALT(Key_C)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_1)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_1)) \ + OP(XKB_KEY_asterisk, RALT(Key_Slash)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, RALT(Key_Semicolon)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_O)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Semicolon) \ + OP(XKB_KEY_endash, RALT(Key_Y)) \ + OP(XKB_KEY_equal, LSHIFT(Key_7)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_4)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_Backtick) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_X)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, Key_Equals) \ + OP(XKB_KEY_odiaeresis, Key_0) \ + OP(XKB_KEY_odoubleacute, Key_LeftBracket) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_3)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_P)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, RALT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_6)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_RightBracket) \ + OP(XKB_KEY_udiaeresis, Key_Minus) \ + OP(XKB_KEY_udoubleacute, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace hu { +namespace 101_qwerty_comma_dead { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace 101_qwerty_comma_dead +} // namespace hu +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/hu/101_qwerty_comma_nodead/keymap.h b/src/kaleidoscope/host_keymap/linux/hu/101_qwerty_comma_nodead/keymap.h new file mode 100644 index 0000000000..64aa2a4057 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/hu/101_qwerty_comma_nodead/keymap.h @@ -0,0 +1,586 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: hu +// variant: 101_qwerty_comma_nodead + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', RALT(Key_Backtick)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', RALT(Key_Backtick)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_Semicolon))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(Key_Minus)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_5)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'´', RALT(Key_9)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(Key_Equals)) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', LSHIFT(Key_Quote)) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(Key_E)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'É', LSHIFT(Key_Semicolon)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(Key_I)) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', LSHIFT(Key_Equals)) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', LSHIFT(Key_0)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', LSHIFT(Key_RightBracket)) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', LSHIFT(Key_Minus)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_Quote) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'é', Key_Semicolon) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_Backtick) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', Key_Equals) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', Key_0) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ú', Key_RightBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', Key_Minus) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ő', LSHIFT(Key_LeftBracket)) /* U+0150, XKB_KEY_Odoubleacute, LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'ő', Key_LeftBracket) /* U+0151, XKB_KEY_odoubleacute, LATIN SMALL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ű', LSHIFT(Key_NonUsPound)) /* U+0170, XKB_KEY_Udoubleacute, LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ű', Key_NonUsPound) /* U+0171, XKB_KEY_udoubleacute, LATIN SMALL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ˇ', RALT(Key_2)) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(Key_4)) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(Key_8)) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(Key_6)) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(Key_0)) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(Key_Y)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_P)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_O)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_U)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_Backtick)) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Adiaeresis, RALT(Key_E)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_U)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(Key_I)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_0)) \ + OP(XKB_KEY_Odoubleacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Udoubleacute, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_Quote) \ + OP(XKB_KEY_abovedot, RALT(Key_8)) \ + OP(XKB_KEY_acute, RALT(Key_9)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, RALT(Key_C)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_1)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_1)) \ + OP(XKB_KEY_asterisk, RALT(Key_Slash)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(Key_4)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(Key_2)) \ + OP(XKB_KEY_cedilla, RALT(Key_Equals)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, RALT(Key_5)) \ + OP(XKB_KEY_diaeresis, RALT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, RALT(Key_Semicolon)) \ + OP(XKB_KEY_doubleacute, RALT(Key_0)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_O)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Semicolon) \ + OP(XKB_KEY_endash, RALT(Key_Y)) \ + OP(XKB_KEY_equal, LSHIFT(Key_7)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_4)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_Backtick) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_X)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, Key_Equals) \ + OP(XKB_KEY_odiaeresis, Key_0) \ + OP(XKB_KEY_odoubleacute, Key_LeftBracket) \ + OP(XKB_KEY_ogonek, RALT(Key_6)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_3)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_P)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, RALT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_6)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_RightBracket) \ + OP(XKB_KEY_udiaeresis, Key_Minus) \ + OP(XKB_KEY_udoubleacute, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace hu { +namespace 101_qwerty_comma_nodead { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace 101_qwerty_comma_nodead +} // namespace hu +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/hu/101_qwerty_dot_dead/keymap.h b/src/kaleidoscope/host_keymap/linux/hu/101_qwerty_dot_dead/keymap.h new file mode 100644 index 0000000000..b8e5249684 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/hu/101_qwerty_dot_dead/keymap.h @@ -0,0 +1,575 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: hu +// variant: 101_qwerty_dot_dead + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', RALT(Key_Backtick)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', RALT(Key_Backtick)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(LSHIFT(Key_Semicolon))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'´', RALT(LSHIFT(Key_9))) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'Á', LSHIFT(Key_Quote)) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(Key_E)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'É', LSHIFT(Key_Semicolon)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(Key_I)) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', LSHIFT(Key_Equals)) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', LSHIFT(Key_0)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', LSHIFT(Key_RightBracket)) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', LSHIFT(Key_Minus)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_Quote) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'é', Key_Semicolon) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_Backtick) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', Key_Equals) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', Key_0) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ú', Key_RightBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', Key_Minus) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ő', LSHIFT(Key_LeftBracket)) /* U+0150, XKB_KEY_Odoubleacute, LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'ő', Key_LeftBracket) /* U+0151, XKB_KEY_odoubleacute, LATIN SMALL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ű', LSHIFT(Key_NonUsPound)) /* U+0170, XKB_KEY_Udoubleacute, LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ű', Key_NonUsPound) /* U+0171, XKB_KEY_udoubleacute, LATIN SMALL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(Key_Y)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_P)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_O)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_U)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_Backtick)) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Adiaeresis, RALT(Key_E)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_U)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(Key_I)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_0)) \ + OP(XKB_KEY_Odoubleacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Udoubleacute, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_Quote) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_acute, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, RALT(Key_C)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_1)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_1)) \ + OP(XKB_KEY_asterisk, RALT(Key_Slash)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, RALT(Key_Semicolon)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_O)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Semicolon) \ + OP(XKB_KEY_endash, RALT(Key_Y)) \ + OP(XKB_KEY_equal, LSHIFT(Key_7)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_4)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_Backtick) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_X)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, Key_Equals) \ + OP(XKB_KEY_odiaeresis, Key_0) \ + OP(XKB_KEY_odoubleacute, Key_LeftBracket) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_3)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_P)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, RALT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_6)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_RightBracket) \ + OP(XKB_KEY_udiaeresis, Key_Minus) \ + OP(XKB_KEY_udoubleacute, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace hu { +namespace 101_qwerty_dot_dead { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace 101_qwerty_dot_dead +} // namespace hu +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/hu/101_qwerty_dot_nodead/keymap.h b/src/kaleidoscope/host_keymap/linux/hu/101_qwerty_dot_nodead/keymap.h new file mode 100644 index 0000000000..49a9419b25 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/hu/101_qwerty_dot_nodead/keymap.h @@ -0,0 +1,586 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: hu +// variant: 101_qwerty_dot_nodead + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', RALT(Key_Backtick)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', RALT(Key_Backtick)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_Semicolon))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(Key_Minus)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_5)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'´', RALT(Key_9)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(Key_Equals)) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', LSHIFT(Key_Quote)) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(Key_E)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'É', LSHIFT(Key_Semicolon)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(Key_I)) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', LSHIFT(Key_Equals)) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', LSHIFT(Key_0)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', LSHIFT(Key_RightBracket)) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', LSHIFT(Key_Minus)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_Quote) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'é', Key_Semicolon) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_Backtick) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', Key_Equals) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', Key_0) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ú', Key_RightBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', Key_Minus) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ő', LSHIFT(Key_LeftBracket)) /* U+0150, XKB_KEY_Odoubleacute, LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'ő', Key_LeftBracket) /* U+0151, XKB_KEY_odoubleacute, LATIN SMALL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ű', LSHIFT(Key_NonUsPound)) /* U+0170, XKB_KEY_Udoubleacute, LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ű', Key_NonUsPound) /* U+0171, XKB_KEY_udoubleacute, LATIN SMALL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ˇ', RALT(Key_2)) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(Key_4)) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(Key_8)) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(Key_6)) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(Key_0)) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(Key_Y)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_P)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_O)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_U)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_Backtick)) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Adiaeresis, RALT(Key_E)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_U)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(Key_I)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_0)) \ + OP(XKB_KEY_Odoubleacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Udoubleacute, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_Quote) \ + OP(XKB_KEY_abovedot, RALT(Key_8)) \ + OP(XKB_KEY_acute, RALT(Key_9)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, RALT(Key_C)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_1)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_1)) \ + OP(XKB_KEY_asterisk, RALT(Key_Slash)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(Key_4)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(Key_2)) \ + OP(XKB_KEY_cedilla, RALT(Key_Equals)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, RALT(Key_5)) \ + OP(XKB_KEY_diaeresis, RALT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, RALT(Key_Semicolon)) \ + OP(XKB_KEY_doubleacute, RALT(Key_0)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_O)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Semicolon) \ + OP(XKB_KEY_endash, RALT(Key_Y)) \ + OP(XKB_KEY_equal, LSHIFT(Key_7)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_4)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_Backtick) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_X)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, Key_Equals) \ + OP(XKB_KEY_odiaeresis, Key_0) \ + OP(XKB_KEY_odoubleacute, Key_LeftBracket) \ + OP(XKB_KEY_ogonek, RALT(Key_6)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_3)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_P)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, RALT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_6)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_RightBracket) \ + OP(XKB_KEY_udiaeresis, Key_Minus) \ + OP(XKB_KEY_udoubleacute, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace hu { +namespace 101_qwerty_dot_nodead { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace 101_qwerty_dot_nodead +} // namespace hu +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/hu/101_qwertz_comma_dead/keymap.h b/src/kaleidoscope/host_keymap/linux/hu/101_qwertz_comma_dead/keymap.h new file mode 100644 index 0000000000..fcf6e12d28 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/hu/101_qwertz_comma_dead/keymap.h @@ -0,0 +1,575 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: hu +// variant: 101_qwertz_comma_dead + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', RALT(Key_Backtick)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', RALT(Key_Backtick)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(LSHIFT(Key_Semicolon))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'´', RALT(LSHIFT(Key_9))) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'Á', LSHIFT(Key_Quote)) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(Key_E)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'É', LSHIFT(Key_Semicolon)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(Key_I)) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', LSHIFT(Key_Equals)) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', LSHIFT(Key_0)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', LSHIFT(Key_RightBracket)) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', LSHIFT(Key_Minus)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_Quote) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'é', Key_Semicolon) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_Backtick) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', Key_Equals) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', Key_0) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ú', Key_RightBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', Key_Minus) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ő', LSHIFT(Key_LeftBracket)) /* U+0150, XKB_KEY_Odoubleacute, LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'ő', Key_LeftBracket) /* U+0151, XKB_KEY_odoubleacute, LATIN SMALL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ű', LSHIFT(Key_NonUsPound)) /* U+0170, XKB_KEY_Udoubleacute, LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ű', Key_NonUsPound) /* U+0171, XKB_KEY_udoubleacute, LATIN SMALL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(Key_Y)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_P)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_O)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_U)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_Backtick)) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Adiaeresis, RALT(Key_E)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_U)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(Key_I)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_0)) \ + OP(XKB_KEY_Odoubleacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Udoubleacute, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_Quote) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_acute, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, RALT(Key_C)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_1)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_1)) \ + OP(XKB_KEY_asterisk, RALT(Key_Slash)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, RALT(Key_Semicolon)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_O)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Semicolon) \ + OP(XKB_KEY_endash, RALT(Key_Y)) \ + OP(XKB_KEY_equal, LSHIFT(Key_7)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_4)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_Backtick) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_X)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, Key_Equals) \ + OP(XKB_KEY_odiaeresis, Key_0) \ + OP(XKB_KEY_odoubleacute, Key_LeftBracket) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_3)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_P)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, RALT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_6)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_RightBracket) \ + OP(XKB_KEY_udiaeresis, Key_Minus) \ + OP(XKB_KEY_udoubleacute, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace hu { +namespace 101_qwertz_comma_dead { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace 101_qwertz_comma_dead +} // namespace hu +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/hu/101_qwertz_comma_nodead/keymap.h b/src/kaleidoscope/host_keymap/linux/hu/101_qwertz_comma_nodead/keymap.h new file mode 100644 index 0000000000..b67f77c272 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/hu/101_qwertz_comma_nodead/keymap.h @@ -0,0 +1,586 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: hu +// variant: 101_qwertz_comma_nodead + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', RALT(Key_Backtick)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', RALT(Key_Backtick)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_Semicolon))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(Key_Minus)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_5)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'´', RALT(Key_9)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(Key_Equals)) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', LSHIFT(Key_Quote)) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(Key_E)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'É', LSHIFT(Key_Semicolon)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(Key_I)) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', LSHIFT(Key_Equals)) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', LSHIFT(Key_0)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', LSHIFT(Key_RightBracket)) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', LSHIFT(Key_Minus)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_Quote) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'é', Key_Semicolon) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_Backtick) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', Key_Equals) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', Key_0) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ú', Key_RightBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', Key_Minus) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ő', LSHIFT(Key_LeftBracket)) /* U+0150, XKB_KEY_Odoubleacute, LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'ő', Key_LeftBracket) /* U+0151, XKB_KEY_odoubleacute, LATIN SMALL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ű', LSHIFT(Key_NonUsPound)) /* U+0170, XKB_KEY_Udoubleacute, LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ű', Key_NonUsPound) /* U+0171, XKB_KEY_udoubleacute, LATIN SMALL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ˇ', RALT(Key_2)) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(Key_4)) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(Key_8)) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(Key_6)) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(Key_0)) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(Key_Y)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_P)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_O)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_U)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_Backtick)) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Adiaeresis, RALT(Key_E)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_U)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(Key_I)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_0)) \ + OP(XKB_KEY_Odoubleacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Udoubleacute, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_Quote) \ + OP(XKB_KEY_abovedot, RALT(Key_8)) \ + OP(XKB_KEY_acute, RALT(Key_9)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, RALT(Key_C)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_1)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_1)) \ + OP(XKB_KEY_asterisk, RALT(Key_Slash)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(Key_4)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(Key_2)) \ + OP(XKB_KEY_cedilla, RALT(Key_Equals)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, RALT(Key_5)) \ + OP(XKB_KEY_diaeresis, RALT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, RALT(Key_Semicolon)) \ + OP(XKB_KEY_doubleacute, RALT(Key_0)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_O)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Semicolon) \ + OP(XKB_KEY_endash, RALT(Key_Y)) \ + OP(XKB_KEY_equal, LSHIFT(Key_7)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_4)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_Backtick) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_X)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, Key_Equals) \ + OP(XKB_KEY_odiaeresis, Key_0) \ + OP(XKB_KEY_odoubleacute, Key_LeftBracket) \ + OP(XKB_KEY_ogonek, RALT(Key_6)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_3)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_P)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, RALT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_6)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_RightBracket) \ + OP(XKB_KEY_udiaeresis, Key_Minus) \ + OP(XKB_KEY_udoubleacute, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace hu { +namespace 101_qwertz_comma_nodead { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace 101_qwertz_comma_nodead +} // namespace hu +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/hu/101_qwertz_dot_dead/keymap.h b/src/kaleidoscope/host_keymap/linux/hu/101_qwertz_dot_dead/keymap.h new file mode 100644 index 0000000000..c0684e9493 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/hu/101_qwertz_dot_dead/keymap.h @@ -0,0 +1,575 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: hu +// variant: 101_qwertz_dot_dead + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', RALT(Key_Backtick)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', RALT(Key_Backtick)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(LSHIFT(Key_Semicolon))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'´', RALT(LSHIFT(Key_9))) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'Á', LSHIFT(Key_Quote)) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(Key_E)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'É', LSHIFT(Key_Semicolon)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(Key_I)) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', LSHIFT(Key_Equals)) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', LSHIFT(Key_0)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', LSHIFT(Key_RightBracket)) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', LSHIFT(Key_Minus)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_Quote) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'é', Key_Semicolon) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_Backtick) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', Key_Equals) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', Key_0) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ú', Key_RightBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', Key_Minus) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ő', LSHIFT(Key_LeftBracket)) /* U+0150, XKB_KEY_Odoubleacute, LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'ő', Key_LeftBracket) /* U+0151, XKB_KEY_odoubleacute, LATIN SMALL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ű', LSHIFT(Key_NonUsPound)) /* U+0170, XKB_KEY_Udoubleacute, LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ű', Key_NonUsPound) /* U+0171, XKB_KEY_udoubleacute, LATIN SMALL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(Key_Y)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_P)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_O)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_U)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_Backtick)) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Adiaeresis, RALT(Key_E)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_U)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(Key_I)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_0)) \ + OP(XKB_KEY_Odoubleacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Udoubleacute, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_Quote) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_acute, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, RALT(Key_C)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_1)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_1)) \ + OP(XKB_KEY_asterisk, RALT(Key_Slash)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, RALT(Key_Semicolon)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_O)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Semicolon) \ + OP(XKB_KEY_endash, RALT(Key_Y)) \ + OP(XKB_KEY_equal, LSHIFT(Key_7)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_4)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_Backtick) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_X)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, Key_Equals) \ + OP(XKB_KEY_odiaeresis, Key_0) \ + OP(XKB_KEY_odoubleacute, Key_LeftBracket) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_3)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_P)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, RALT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_6)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_RightBracket) \ + OP(XKB_KEY_udiaeresis, Key_Minus) \ + OP(XKB_KEY_udoubleacute, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace hu { +namespace 101_qwertz_dot_dead { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace 101_qwertz_dot_dead +} // namespace hu +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/hu/101_qwertz_dot_nodead/keymap.h b/src/kaleidoscope/host_keymap/linux/hu/101_qwertz_dot_nodead/keymap.h new file mode 100644 index 0000000000..8f67401785 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/hu/101_qwertz_dot_nodead/keymap.h @@ -0,0 +1,586 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: hu +// variant: 101_qwertz_dot_nodead + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', RALT(Key_Backtick)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', RALT(Key_Backtick)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_Semicolon))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(Key_Minus)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_5)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'´', RALT(Key_9)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(Key_Equals)) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', LSHIFT(Key_Quote)) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(Key_E)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'É', LSHIFT(Key_Semicolon)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(Key_I)) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', LSHIFT(Key_Equals)) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', LSHIFT(Key_0)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', LSHIFT(Key_RightBracket)) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', LSHIFT(Key_Minus)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_Quote) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'é', Key_Semicolon) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_Backtick) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', Key_Equals) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', Key_0) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ú', Key_RightBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', Key_Minus) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ő', LSHIFT(Key_LeftBracket)) /* U+0150, XKB_KEY_Odoubleacute, LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'ő', Key_LeftBracket) /* U+0151, XKB_KEY_odoubleacute, LATIN SMALL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ű', LSHIFT(Key_NonUsPound)) /* U+0170, XKB_KEY_Udoubleacute, LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ű', Key_NonUsPound) /* U+0171, XKB_KEY_udoubleacute, LATIN SMALL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ˇ', RALT(Key_2)) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(Key_4)) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(Key_8)) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(Key_6)) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(Key_0)) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(Key_Y)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_P)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_O)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_U)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_Backtick)) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Adiaeresis, RALT(Key_E)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_U)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(Key_I)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_0)) \ + OP(XKB_KEY_Odoubleacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Udoubleacute, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_Quote) \ + OP(XKB_KEY_abovedot, RALT(Key_8)) \ + OP(XKB_KEY_acute, RALT(Key_9)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, RALT(Key_C)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_1)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_1)) \ + OP(XKB_KEY_asterisk, RALT(Key_Slash)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(Key_4)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(Key_2)) \ + OP(XKB_KEY_cedilla, RALT(Key_Equals)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, RALT(Key_5)) \ + OP(XKB_KEY_diaeresis, RALT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, RALT(Key_Semicolon)) \ + OP(XKB_KEY_doubleacute, RALT(Key_0)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_O)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Semicolon) \ + OP(XKB_KEY_endash, RALT(Key_Y)) \ + OP(XKB_KEY_equal, LSHIFT(Key_7)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_4)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_Backtick) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_X)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, Key_Equals) \ + OP(XKB_KEY_odiaeresis, Key_0) \ + OP(XKB_KEY_odoubleacute, Key_LeftBracket) \ + OP(XKB_KEY_ogonek, RALT(Key_6)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_3)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_P)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, RALT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_6)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_RightBracket) \ + OP(XKB_KEY_udiaeresis, Key_Minus) \ + OP(XKB_KEY_udoubleacute, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace hu { +namespace 101_qwertz_dot_nodead { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace 101_qwertz_dot_nodead +} // namespace hu +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/hu/102_qwerty_comma_dead/keymap.h b/src/kaleidoscope/host_keymap/linux/hu/102_qwerty_comma_dead/keymap.h new file mode 100644 index 0000000000..434ea9f7c8 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/hu/102_qwerty_comma_dead/keymap.h @@ -0,0 +1,575 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: hu +// variant: 102_qwerty_comma_dead + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_Backtick) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_M)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_Backtick) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_M)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(LSHIFT(Key_Semicolon))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'´', RALT(LSHIFT(Key_9))) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'Á', LSHIFT(Key_Quote)) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(Key_E)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'É', LSHIFT(Key_Semicolon)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(Key_I)) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', LSHIFT(Key_Equals)) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', LSHIFT(Key_0)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', LSHIFT(Key_RightBracket)) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', LSHIFT(Key_Minus)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_Quote) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'é', Key_Semicolon) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_NonUsBackslashAndPipe) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', Key_Equals) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', Key_0) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ú', Key_RightBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', Key_Minus) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ő', LSHIFT(Key_LeftBracket)) /* U+0150, XKB_KEY_Odoubleacute, LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'ő', Key_LeftBracket) /* U+0151, XKB_KEY_odoubleacute, LATIN SMALL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ű', LSHIFT(Key_NonUsPound)) /* U+0170, XKB_KEY_Udoubleacute, LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ű', Key_NonUsPound) /* U+0171, XKB_KEY_udoubleacute, LATIN SMALL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(Key_Y)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_P)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_O)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_U)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_Backtick) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Adiaeresis, RALT(Key_E)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_U)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(Key_I)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_0)) \ + OP(XKB_KEY_Odoubleacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Udoubleacute, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_Quote) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_acute, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, RALT(Key_C)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_1)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_1)) \ + OP(XKB_KEY_asterisk, RALT(Key_Slash)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, RALT(Key_Semicolon)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_O)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Semicolon) \ + OP(XKB_KEY_endash, RALT(Key_Y)) \ + OP(XKB_KEY_equal, LSHIFT(Key_7)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_4)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, RALT(Key_M)) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_X)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, Key_Equals) \ + OP(XKB_KEY_odiaeresis, Key_0) \ + OP(XKB_KEY_odoubleacute, Key_LeftBracket) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_3)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_P)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, RALT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_6)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_RightBracket) \ + OP(XKB_KEY_udiaeresis, Key_Minus) \ + OP(XKB_KEY_udoubleacute, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace hu { +namespace 102_qwerty_comma_dead { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace 102_qwerty_comma_dead +} // namespace hu +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/hu/102_qwerty_comma_nodead/keymap.h b/src/kaleidoscope/host_keymap/linux/hu/102_qwerty_comma_nodead/keymap.h new file mode 100644 index 0000000000..7294f2d8f2 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/hu/102_qwerty_comma_nodead/keymap.h @@ -0,0 +1,586 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: hu +// variant: 102_qwerty_comma_nodead + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_Backtick) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_M)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_Backtick) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_M)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_Semicolon))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(Key_Minus)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_5)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'´', RALT(Key_9)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(Key_Equals)) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', LSHIFT(Key_Quote)) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(Key_E)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'É', LSHIFT(Key_Semicolon)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(Key_I)) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', LSHIFT(Key_Equals)) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', LSHIFT(Key_0)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', LSHIFT(Key_RightBracket)) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', LSHIFT(Key_Minus)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_Quote) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'é', Key_Semicolon) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_NonUsBackslashAndPipe) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', Key_Equals) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', Key_0) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ú', Key_RightBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', Key_Minus) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ő', LSHIFT(Key_LeftBracket)) /* U+0150, XKB_KEY_Odoubleacute, LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'ő', Key_LeftBracket) /* U+0151, XKB_KEY_odoubleacute, LATIN SMALL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ű', LSHIFT(Key_NonUsPound)) /* U+0170, XKB_KEY_Udoubleacute, LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ű', Key_NonUsPound) /* U+0171, XKB_KEY_udoubleacute, LATIN SMALL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ˇ', RALT(Key_2)) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(Key_4)) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(Key_8)) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(Key_6)) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(Key_0)) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(Key_Y)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_P)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_O)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_U)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_Backtick) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Adiaeresis, RALT(Key_E)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_U)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(Key_I)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_0)) \ + OP(XKB_KEY_Odoubleacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Udoubleacute, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_Quote) \ + OP(XKB_KEY_abovedot, RALT(Key_8)) \ + OP(XKB_KEY_acute, RALT(Key_9)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, RALT(Key_C)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_1)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_1)) \ + OP(XKB_KEY_asterisk, RALT(Key_Slash)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(Key_4)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(Key_2)) \ + OP(XKB_KEY_cedilla, RALT(Key_Equals)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, RALT(Key_5)) \ + OP(XKB_KEY_diaeresis, RALT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, RALT(Key_Semicolon)) \ + OP(XKB_KEY_doubleacute, RALT(Key_0)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_O)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Semicolon) \ + OP(XKB_KEY_endash, RALT(Key_Y)) \ + OP(XKB_KEY_equal, LSHIFT(Key_7)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_4)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, RALT(Key_M)) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_X)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, Key_Equals) \ + OP(XKB_KEY_odiaeresis, Key_0) \ + OP(XKB_KEY_odoubleacute, Key_LeftBracket) \ + OP(XKB_KEY_ogonek, RALT(Key_6)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_3)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_P)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, RALT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_6)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_RightBracket) \ + OP(XKB_KEY_udiaeresis, Key_Minus) \ + OP(XKB_KEY_udoubleacute, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace hu { +namespace 102_qwerty_comma_nodead { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace 102_qwerty_comma_nodead +} // namespace hu +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/hu/102_qwerty_dot_dead/keymap.h b/src/kaleidoscope/host_keymap/linux/hu/102_qwerty_dot_dead/keymap.h new file mode 100644 index 0000000000..7b885cedc4 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/hu/102_qwerty_dot_dead/keymap.h @@ -0,0 +1,575 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: hu +// variant: 102_qwerty_dot_dead + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_Backtick) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_M)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_Backtick) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_M)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(LSHIFT(Key_Semicolon))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'´', RALT(LSHIFT(Key_9))) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'Á', LSHIFT(Key_Quote)) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(Key_E)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'É', LSHIFT(Key_Semicolon)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(Key_I)) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', LSHIFT(Key_Equals)) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', LSHIFT(Key_0)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', LSHIFT(Key_RightBracket)) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', LSHIFT(Key_Minus)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_Quote) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'é', Key_Semicolon) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_NonUsBackslashAndPipe) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', Key_Equals) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', Key_0) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ú', Key_RightBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', Key_Minus) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ő', LSHIFT(Key_LeftBracket)) /* U+0150, XKB_KEY_Odoubleacute, LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'ő', Key_LeftBracket) /* U+0151, XKB_KEY_odoubleacute, LATIN SMALL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ű', LSHIFT(Key_NonUsPound)) /* U+0170, XKB_KEY_Udoubleacute, LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ű', Key_NonUsPound) /* U+0171, XKB_KEY_udoubleacute, LATIN SMALL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(Key_Y)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_P)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_O)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_U)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_Backtick) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Adiaeresis, RALT(Key_E)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_U)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(Key_I)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_0)) \ + OP(XKB_KEY_Odoubleacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Udoubleacute, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_Quote) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_acute, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, RALT(Key_C)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_1)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_1)) \ + OP(XKB_KEY_asterisk, RALT(Key_Slash)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, RALT(Key_Semicolon)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_O)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Semicolon) \ + OP(XKB_KEY_endash, RALT(Key_Y)) \ + OP(XKB_KEY_equal, LSHIFT(Key_7)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_4)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, RALT(Key_M)) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_X)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, Key_Equals) \ + OP(XKB_KEY_odiaeresis, Key_0) \ + OP(XKB_KEY_odoubleacute, Key_LeftBracket) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_3)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_P)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, RALT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_6)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_RightBracket) \ + OP(XKB_KEY_udiaeresis, Key_Minus) \ + OP(XKB_KEY_udoubleacute, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace hu { +namespace 102_qwerty_dot_dead { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace 102_qwerty_dot_dead +} // namespace hu +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/hu/102_qwerty_dot_nodead/keymap.h b/src/kaleidoscope/host_keymap/linux/hu/102_qwerty_dot_nodead/keymap.h new file mode 100644 index 0000000000..a5eca54c9e --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/hu/102_qwerty_dot_nodead/keymap.h @@ -0,0 +1,586 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: hu +// variant: 102_qwerty_dot_nodead + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_Backtick) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_M)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_Backtick) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_M)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_Semicolon))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(Key_Minus)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_5)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'´', RALT(Key_9)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(Key_Equals)) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', LSHIFT(Key_Quote)) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(Key_E)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'É', LSHIFT(Key_Semicolon)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(Key_I)) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', LSHIFT(Key_Equals)) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', LSHIFT(Key_0)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', LSHIFT(Key_RightBracket)) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', LSHIFT(Key_Minus)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_Quote) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'é', Key_Semicolon) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_NonUsBackslashAndPipe) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', Key_Equals) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', Key_0) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ú', Key_RightBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', Key_Minus) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ő', LSHIFT(Key_LeftBracket)) /* U+0150, XKB_KEY_Odoubleacute, LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'ő', Key_LeftBracket) /* U+0151, XKB_KEY_odoubleacute, LATIN SMALL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ű', LSHIFT(Key_NonUsPound)) /* U+0170, XKB_KEY_Udoubleacute, LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ű', Key_NonUsPound) /* U+0171, XKB_KEY_udoubleacute, LATIN SMALL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ˇ', RALT(Key_2)) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(Key_4)) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(Key_8)) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(Key_6)) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(Key_0)) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(Key_Y)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_P)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_O)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_U)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_Backtick) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Adiaeresis, RALT(Key_E)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_U)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(Key_I)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_0)) \ + OP(XKB_KEY_Odoubleacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Udoubleacute, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_Quote) \ + OP(XKB_KEY_abovedot, RALT(Key_8)) \ + OP(XKB_KEY_acute, RALT(Key_9)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, RALT(Key_C)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_1)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_1)) \ + OP(XKB_KEY_asterisk, RALT(Key_Slash)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(Key_4)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(Key_2)) \ + OP(XKB_KEY_cedilla, RALT(Key_Equals)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, RALT(Key_5)) \ + OP(XKB_KEY_diaeresis, RALT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, RALT(Key_Semicolon)) \ + OP(XKB_KEY_doubleacute, RALT(Key_0)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_O)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Semicolon) \ + OP(XKB_KEY_endash, RALT(Key_Y)) \ + OP(XKB_KEY_equal, LSHIFT(Key_7)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_4)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, RALT(Key_M)) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_X)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, Key_Equals) \ + OP(XKB_KEY_odiaeresis, Key_0) \ + OP(XKB_KEY_odoubleacute, Key_LeftBracket) \ + OP(XKB_KEY_ogonek, RALT(Key_6)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_3)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_P)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, RALT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_6)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_RightBracket) \ + OP(XKB_KEY_udiaeresis, Key_Minus) \ + OP(XKB_KEY_udoubleacute, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace hu { +namespace 102_qwerty_dot_nodead { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace 102_qwerty_dot_nodead +} // namespace hu +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/hu/102_qwertz_comma_dead/keymap.h b/src/kaleidoscope/host_keymap/linux/hu/102_qwertz_comma_dead/keymap.h new file mode 100644 index 0000000000..d500495306 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/hu/102_qwertz_comma_dead/keymap.h @@ -0,0 +1,575 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: hu +// variant: 102_qwertz_comma_dead + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_Backtick) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_M)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_Backtick) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_M)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(LSHIFT(Key_Semicolon))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'´', RALT(LSHIFT(Key_9))) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'Á', LSHIFT(Key_Quote)) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(Key_E)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'É', LSHIFT(Key_Semicolon)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(Key_I)) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', LSHIFT(Key_Equals)) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', LSHIFT(Key_0)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', LSHIFT(Key_RightBracket)) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', LSHIFT(Key_Minus)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_Quote) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'é', Key_Semicolon) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_NonUsBackslashAndPipe) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', Key_Equals) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', Key_0) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ú', Key_RightBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', Key_Minus) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ő', LSHIFT(Key_LeftBracket)) /* U+0150, XKB_KEY_Odoubleacute, LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'ő', Key_LeftBracket) /* U+0151, XKB_KEY_odoubleacute, LATIN SMALL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ű', LSHIFT(Key_NonUsPound)) /* U+0170, XKB_KEY_Udoubleacute, LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ű', Key_NonUsPound) /* U+0171, XKB_KEY_udoubleacute, LATIN SMALL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(Key_Y)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_P)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_O)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_U)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_Backtick) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Adiaeresis, RALT(Key_E)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_U)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(Key_I)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_0)) \ + OP(XKB_KEY_Odoubleacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Udoubleacute, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_Quote) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_acute, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, RALT(Key_C)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_1)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_1)) \ + OP(XKB_KEY_asterisk, RALT(Key_Slash)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, RALT(Key_Semicolon)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_O)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Semicolon) \ + OP(XKB_KEY_endash, RALT(Key_Y)) \ + OP(XKB_KEY_equal, LSHIFT(Key_7)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_4)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, RALT(Key_M)) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_X)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, Key_Equals) \ + OP(XKB_KEY_odiaeresis, Key_0) \ + OP(XKB_KEY_odoubleacute, Key_LeftBracket) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_3)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_P)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, RALT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_6)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_RightBracket) \ + OP(XKB_KEY_udiaeresis, Key_Minus) \ + OP(XKB_KEY_udoubleacute, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace hu { +namespace 102_qwertz_comma_dead { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace 102_qwertz_comma_dead +} // namespace hu +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/hu/102_qwertz_comma_nodead/keymap.h b/src/kaleidoscope/host_keymap/linux/hu/102_qwertz_comma_nodead/keymap.h new file mode 100644 index 0000000000..8991bd6f98 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/hu/102_qwertz_comma_nodead/keymap.h @@ -0,0 +1,586 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: hu +// variant: 102_qwertz_comma_nodead + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_Backtick) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_M)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_Backtick) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_M)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_Semicolon))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(Key_Minus)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_5)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'´', RALT(Key_9)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(Key_Equals)) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', LSHIFT(Key_Quote)) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(Key_E)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'É', LSHIFT(Key_Semicolon)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(Key_I)) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', LSHIFT(Key_Equals)) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', LSHIFT(Key_0)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', LSHIFT(Key_RightBracket)) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', LSHIFT(Key_Minus)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_Quote) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'é', Key_Semicolon) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_NonUsBackslashAndPipe) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', Key_Equals) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', Key_0) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ú', Key_RightBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', Key_Minus) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ő', LSHIFT(Key_LeftBracket)) /* U+0150, XKB_KEY_Odoubleacute, LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'ő', Key_LeftBracket) /* U+0151, XKB_KEY_odoubleacute, LATIN SMALL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ű', LSHIFT(Key_NonUsPound)) /* U+0170, XKB_KEY_Udoubleacute, LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ű', Key_NonUsPound) /* U+0171, XKB_KEY_udoubleacute, LATIN SMALL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ˇ', RALT(Key_2)) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(Key_4)) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(Key_8)) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(Key_6)) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(Key_0)) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(Key_Y)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_P)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_O)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_U)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_Backtick) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Adiaeresis, RALT(Key_E)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_U)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(Key_I)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_0)) \ + OP(XKB_KEY_Odoubleacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Udoubleacute, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_Quote) \ + OP(XKB_KEY_abovedot, RALT(Key_8)) \ + OP(XKB_KEY_acute, RALT(Key_9)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, RALT(Key_C)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_1)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_1)) \ + OP(XKB_KEY_asterisk, RALT(Key_Slash)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(Key_4)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(Key_2)) \ + OP(XKB_KEY_cedilla, RALT(Key_Equals)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, RALT(Key_5)) \ + OP(XKB_KEY_diaeresis, RALT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, RALT(Key_Semicolon)) \ + OP(XKB_KEY_doubleacute, RALT(Key_0)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_O)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Semicolon) \ + OP(XKB_KEY_endash, RALT(Key_Y)) \ + OP(XKB_KEY_equal, LSHIFT(Key_7)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_4)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, RALT(Key_M)) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_X)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, Key_Equals) \ + OP(XKB_KEY_odiaeresis, Key_0) \ + OP(XKB_KEY_odoubleacute, Key_LeftBracket) \ + OP(XKB_KEY_ogonek, RALT(Key_6)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_3)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_P)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, RALT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_6)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_RightBracket) \ + OP(XKB_KEY_udiaeresis, Key_Minus) \ + OP(XKB_KEY_udoubleacute, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace hu { +namespace 102_qwertz_comma_nodead { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace 102_qwertz_comma_nodead +} // namespace hu +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/hu/102_qwertz_dot_dead/keymap.h b/src/kaleidoscope/host_keymap/linux/hu/102_qwertz_dot_dead/keymap.h new file mode 100644 index 0000000000..51074b0659 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/hu/102_qwertz_dot_dead/keymap.h @@ -0,0 +1,575 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: hu +// variant: 102_qwertz_dot_dead + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_Backtick) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_M)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_Backtick) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_M)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(LSHIFT(Key_Semicolon))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'´', RALT(LSHIFT(Key_9))) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'Á', LSHIFT(Key_Quote)) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(Key_E)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'É', LSHIFT(Key_Semicolon)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(Key_I)) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', LSHIFT(Key_Equals)) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', LSHIFT(Key_0)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', LSHIFT(Key_RightBracket)) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', LSHIFT(Key_Minus)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_Quote) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'é', Key_Semicolon) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_NonUsBackslashAndPipe) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', Key_Equals) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', Key_0) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ú', Key_RightBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', Key_Minus) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ő', LSHIFT(Key_LeftBracket)) /* U+0150, XKB_KEY_Odoubleacute, LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'ő', Key_LeftBracket) /* U+0151, XKB_KEY_odoubleacute, LATIN SMALL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ű', LSHIFT(Key_NonUsPound)) /* U+0170, XKB_KEY_Udoubleacute, LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ű', Key_NonUsPound) /* U+0171, XKB_KEY_udoubleacute, LATIN SMALL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(Key_Y)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_P)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_O)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_U)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_Backtick) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Adiaeresis, RALT(Key_E)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_U)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(Key_I)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_0)) \ + OP(XKB_KEY_Odoubleacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Udoubleacute, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_Quote) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_acute, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, RALT(Key_C)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_1)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_1)) \ + OP(XKB_KEY_asterisk, RALT(Key_Slash)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, RALT(Key_Semicolon)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_O)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Semicolon) \ + OP(XKB_KEY_endash, RALT(Key_Y)) \ + OP(XKB_KEY_equal, LSHIFT(Key_7)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_4)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, RALT(Key_M)) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_X)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, Key_Equals) \ + OP(XKB_KEY_odiaeresis, Key_0) \ + OP(XKB_KEY_odoubleacute, Key_LeftBracket) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_3)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_P)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, RALT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_6)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_RightBracket) \ + OP(XKB_KEY_udiaeresis, Key_Minus) \ + OP(XKB_KEY_udoubleacute, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace hu { +namespace 102_qwertz_dot_dead { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace 102_qwertz_dot_dead +} // namespace hu +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/hu/102_qwertz_dot_nodead/keymap.h b/src/kaleidoscope/host_keymap/linux/hu/102_qwertz_dot_nodead/keymap.h new file mode 100644 index 0000000000..35515e5b3b --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/hu/102_qwertz_dot_nodead/keymap.h @@ -0,0 +1,586 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: hu +// variant: 102_qwertz_dot_nodead + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_Backtick) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_M)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_Backtick) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_M)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_Semicolon))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(Key_Minus)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_5)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'´', RALT(Key_9)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(Key_Equals)) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', LSHIFT(Key_Quote)) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(Key_E)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'É', LSHIFT(Key_Semicolon)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(Key_I)) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', LSHIFT(Key_Equals)) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', LSHIFT(Key_0)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', LSHIFT(Key_RightBracket)) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', LSHIFT(Key_Minus)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_Quote) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'é', Key_Semicolon) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_NonUsBackslashAndPipe) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', Key_Equals) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', Key_0) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ú', Key_RightBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', Key_Minus) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ő', LSHIFT(Key_LeftBracket)) /* U+0150, XKB_KEY_Odoubleacute, LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'ő', Key_LeftBracket) /* U+0151, XKB_KEY_odoubleacute, LATIN SMALL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ű', LSHIFT(Key_NonUsPound)) /* U+0170, XKB_KEY_Udoubleacute, LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ű', Key_NonUsPound) /* U+0171, XKB_KEY_udoubleacute, LATIN SMALL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ˇ', RALT(Key_2)) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(Key_4)) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(Key_8)) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(Key_6)) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(Key_0)) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(Key_Y)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_P)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_O)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_U)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_Backtick) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Adiaeresis, RALT(Key_E)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_U)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(Key_I)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_0)) \ + OP(XKB_KEY_Odoubleacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Udoubleacute, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_Quote) \ + OP(XKB_KEY_abovedot, RALT(Key_8)) \ + OP(XKB_KEY_acute, RALT(Key_9)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, RALT(Key_C)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_1)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_1)) \ + OP(XKB_KEY_asterisk, RALT(Key_Slash)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(Key_4)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(Key_2)) \ + OP(XKB_KEY_cedilla, RALT(Key_Equals)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, RALT(Key_5)) \ + OP(XKB_KEY_diaeresis, RALT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, RALT(Key_Semicolon)) \ + OP(XKB_KEY_doubleacute, RALT(Key_0)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_O)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Semicolon) \ + OP(XKB_KEY_endash, RALT(Key_Y)) \ + OP(XKB_KEY_equal, LSHIFT(Key_7)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_4)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, RALT(Key_M)) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_X)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, Key_Equals) \ + OP(XKB_KEY_odiaeresis, Key_0) \ + OP(XKB_KEY_odoubleacute, Key_LeftBracket) \ + OP(XKB_KEY_ogonek, RALT(Key_6)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_3)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_P)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, RALT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_6)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_RightBracket) \ + OP(XKB_KEY_udiaeresis, Key_Minus) \ + OP(XKB_KEY_udoubleacute, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace hu { +namespace 102_qwertz_dot_nodead { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace 102_qwertz_dot_nodead +} // namespace hu +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/hu/nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/hu/nodeadkeys/keymap.h new file mode 100644 index 0000000000..1546c24584 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/hu/nodeadkeys/keymap.h @@ -0,0 +1,586 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: hu +// variant: nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_Backtick) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_M)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_Backtick) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_M)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_Semicolon))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(Key_Minus)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_5)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'´', RALT(Key_9)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(Key_Equals)) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', LSHIFT(Key_Quote)) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(Key_E)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'É', LSHIFT(Key_Semicolon)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(Key_I)) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', LSHIFT(Key_Equals)) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', LSHIFT(Key_0)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', LSHIFT(Key_RightBracket)) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', LSHIFT(Key_Minus)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_Quote) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'é', Key_Semicolon) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_NonUsBackslashAndPipe) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', Key_Equals) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', Key_0) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ú', Key_RightBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', Key_Minus) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ő', LSHIFT(Key_LeftBracket)) /* U+0150, XKB_KEY_Odoubleacute, LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'ő', Key_LeftBracket) /* U+0151, XKB_KEY_odoubleacute, LATIN SMALL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ű', LSHIFT(Key_NonUsPound)) /* U+0170, XKB_KEY_Udoubleacute, LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ű', Key_NonUsPound) /* U+0171, XKB_KEY_udoubleacute, LATIN SMALL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ˇ', RALT(Key_2)) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(Key_4)) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(Key_8)) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(Key_6)) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(Key_0)) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(Key_Y)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_P)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_O)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_U)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_Backtick) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Adiaeresis, RALT(Key_E)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_U)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(Key_I)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_0)) \ + OP(XKB_KEY_Odoubleacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Udoubleacute, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_Quote) \ + OP(XKB_KEY_abovedot, RALT(Key_8)) \ + OP(XKB_KEY_acute, RALT(Key_9)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, RALT(Key_C)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_1)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_1)) \ + OP(XKB_KEY_asterisk, RALT(Key_Slash)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(Key_4)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(Key_2)) \ + OP(XKB_KEY_cedilla, RALT(Key_Equals)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, RALT(Key_5)) \ + OP(XKB_KEY_diaeresis, RALT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, RALT(Key_Semicolon)) \ + OP(XKB_KEY_doubleacute, RALT(Key_0)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_O)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Semicolon) \ + OP(XKB_KEY_endash, RALT(Key_Y)) \ + OP(XKB_KEY_equal, LSHIFT(Key_7)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_4)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, RALT(Key_M)) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_X)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, Key_Equals) \ + OP(XKB_KEY_odiaeresis, Key_0) \ + OP(XKB_KEY_odoubleacute, Key_LeftBracket) \ + OP(XKB_KEY_ogonek, RALT(Key_6)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_3)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_P)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, RALT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_6)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_RightBracket) \ + OP(XKB_KEY_udiaeresis, Key_Minus) \ + OP(XKB_KEY_udoubleacute, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace hu { +namespace nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace nodeadkeys +} // namespace hu +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/hu/oldhun/keymap.h b/src/kaleidoscope/host_keymap/linux/hu/oldhun/keymap.h new file mode 100644 index 0000000000..3c8f07a0ab --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/hu/oldhun/keymap.h @@ -0,0 +1,375 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: hu +// variant: oldhun + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', RALT(LSHIFT(Key_8))) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', RALT(LSHIFT(Key_9))) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', RALT(Key_Backtick)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', RALT(Key_M)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', RALT(LSHIFT(Key_7))) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_G)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_H)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_1))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', RALT(LSHIFT(Key_8))) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', RALT(LSHIFT(Key_9))) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', RALT(Key_Backtick)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', RALT(Key_M)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', RALT(LSHIFT(Key_7))) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_G)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_H)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_1))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'‎', RALT(LSHIFT(Key_Backtick))) \ + OP(L'‏', LSHIFT(Key_Backtick)) \ + OP(L'⁏', RALT(Key_Comma)) \ + OP(L'⸮', LSHIFT(Key_Comma)) \ + OP(L'⹁', Key_Comma) \ + OP(L'𐲀', LSHIFT(Key_A)) \ + OP(L'𐲁', LSHIFT(Key_Quote)) \ + OP(L'𐲂', LSHIFT(Key_B)) \ + OP(L'𐲃', RALT(LSHIFT(Key_A))) \ + OP(L'𐲄', LSHIFT(Key_C)) \ + OP(L'𐲅', RALT(LSHIFT(Key_C))) \ + OP(L'𐲆', LSHIFT(Key_7)) \ + OP(L'𐲇', LSHIFT(Key_D)) \ + OP(L'𐲈', RALT(LSHIFT(Key_Quote))) \ + OP(L'𐲉', LSHIFT(Key_E)) \ + OP(L'𐲊', RALT(LSHIFT(Key_E))) \ + OP(L'𐲋', LSHIFT(Key_Semicolon)) \ + OP(L'𐲌', LSHIFT(Key_F)) \ + OP(L'𐲍', LSHIFT(Key_G)) \ + OP(L'𐲎', LSHIFT(Key_Q)) \ + OP(L'𐲏', LSHIFT(Key_H)) \ + OP(L'𐲐', LSHIFT(Key_I)) \ + OP(L'𐲑', LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(L'𐲒', LSHIFT(Key_J)) \ + OP(L'𐲓', LSHIFT(Key_K)) \ + OP(L'𐲔', RALT(LSHIFT(Key_K))) \ + OP(L'𐲕', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'𐲖', LSHIFT(Key_L)) \ + OP(L'𐲗', LSHIFT(Key_Z)) \ + OP(L'𐲘', LSHIFT(Key_M)) \ + OP(L'𐲙', LSHIFT(Key_N)) \ + OP(L'𐲚', LSHIFT(Key_8)) \ + OP(L'𐲛', LSHIFT(Key_O)) \ + OP(L'𐲜', LSHIFT(Key_Equals)) \ + OP(L'𐲝', RALT(LSHIFT(Key_0))) \ + OP(L'𐲞', LSHIFT(Key_0)) \ + OP(L'𐲟', LSHIFT(Key_LeftBracket)) \ + OP(L'𐲠', LSHIFT(Key_P)) \ + OP(L'𐲡', RALT(LSHIFT(Key_S))) \ + OP(L'𐲢', LSHIFT(Key_R)) \ + OP(L'𐲣', RALT(LSHIFT(Key_R))) \ + OP(L'𐲤', LSHIFT(Key_S)) \ + OP(L'𐲥', LSHIFT(Key_X)) \ + OP(L'𐲦', LSHIFT(Key_T)) \ + OP(L'𐲧', RALT(LSHIFT(Key_D))) \ + OP(L'𐲨', LSHIFT(Key_9)) \ + OP(L'𐲩', RALT(LSHIFT(Key_F))) \ + OP(L'𐲪', LSHIFT(Key_U)) \ + OP(L'𐲫', LSHIFT(Key_RightBracket)) \ + OP(L'𐲬', LSHIFT(Key_NonUsPound)) \ + OP(L'𐲭', LSHIFT(Key_Minus)) \ + OP(L'𐲮', LSHIFT(Key_V)) \ + OP(L'𐲯', LSHIFT(Key_Y)) \ + OP(L'𐲰', LSHIFT(Key_W)) \ + OP(L'𐲱', RALT(LSHIFT(Key_T))) \ + OP(L'𐲲', RALT(LSHIFT(Key_U))) \ + OP(L'𐳀', Key_A) \ + OP(L'𐳁', Key_Quote) \ + OP(L'𐳂', Key_B) \ + OP(L'𐳃', RALT(Key_A)) \ + OP(L'𐳄', Key_C) \ + OP(L'𐳅', RALT(Key_C)) \ + OP(L'𐳆', Key_7) \ + OP(L'𐳇', Key_D) \ + OP(L'𐳈', RALT(Key_Quote)) \ + OP(L'𐳉', Key_E) \ + OP(L'𐳊', RALT(Key_E)) \ + OP(L'𐳋', Key_Semicolon) \ + OP(L'𐳌', Key_F) \ + OP(L'𐳍', Key_G) \ + OP(L'𐳎', Key_Q) \ + OP(L'𐳏', Key_H) \ + OP(L'𐳐', Key_I) \ + OP(L'𐳑', Key_NonUsBackslashAndPipe) \ + OP(L'𐳒', Key_J) \ + OP(L'𐳓', Key_K) \ + OP(L'𐳔', RALT(Key_K)) \ + OP(L'𐳕', RALT(Key_RightBracket)) \ + OP(L'𐳖', Key_L) \ + OP(L'𐳗', Key_Z) \ + OP(L'𐳘', Key_M) \ + OP(L'𐳙', Key_N) \ + OP(L'𐳚', Key_8) \ + OP(L'𐳛', Key_O) \ + OP(L'𐳜', Key_Equals) \ + OP(L'𐳝', RALT(Key_0)) \ + OP(L'𐳞', Key_0) \ + OP(L'𐳟', Key_LeftBracket) \ + OP(L'𐳠', Key_P) \ + OP(L'𐳡', RALT(Key_S)) \ + OP(L'𐳢', Key_R) \ + OP(L'𐳣', RALT(Key_R)) \ + OP(L'𐳤', Key_S) \ + OP(L'𐳥', Key_X) \ + OP(L'𐳦', Key_T) \ + OP(L'𐳧', RALT(Key_D)) \ + OP(L'𐳨', Key_9) \ + OP(L'𐳩', RALT(Key_F)) \ + OP(L'𐳪', Key_U) \ + OP(L'𐳫', Key_RightBracket) \ + OP(L'𐳬', Key_NonUsPound) \ + OP(L'𐳭', Key_Minus) \ + OP(L'𐳮', Key_V) \ + OP(L'𐳯', Key_Y) \ + OP(L'𐳰', Key_W) \ + OP(L'𐳱', RALT(Key_T)) \ + OP(L'𐳲', RALT(Key_U)) \ + OP(L'𐳺', Key_1) \ + OP(L'𐳻', Key_2) \ + OP(L'𐳼', Key_3) \ + OP(L'𐳽', Key_4) \ + OP(L'𐳾', Key_5) \ + OP(L'𐳿', Key_6) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_Backtick)) \ + OP(XKB_KEY_1, RALT(Key_1)) \ + OP(XKB_KEY_2, RALT(Key_2)) \ + OP(XKB_KEY_3, RALT(Key_3)) \ + OP(XKB_KEY_4, RALT(Key_4)) \ + OP(XKB_KEY_5, RALT(Key_5)) \ + OP(XKB_KEY_6, RALT(Key_6)) \ + OP(XKB_KEY_7, RALT(Key_7)) \ + OP(XKB_KEY_8, RALT(Key_8)) \ + OP(XKB_KEY_9, RALT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Latch, RALT(Key_CapsLock)) /* XKB_KEY_ISO_Level3_Latch */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_CapsLock) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_1)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_asterisk, RALT(Key_Slash)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_G)) \ + OP(XKB_KEY_bracketright, RALT(Key_H)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_equal, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_exclam, LSHIFT(Key_4)) \ + OP(XKB_KEY_greater, RALT(Key_Z)) \ + OP(XKB_KEY_less, RALT(Key_M)) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_numbersign, RALT(Key_X)) \ + OP(XKB_KEY_parenleft, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_parenright, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_3)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_slash, LSHIFT(Key_6)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace hu { +namespace oldhun { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace oldhun +} // namespace hu +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/hu/qwerty/keymap.h b/src/kaleidoscope/host_keymap/linux/hu/qwerty/keymap.h new file mode 100644 index 0000000000..3acb77e175 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/hu/qwerty/keymap.h @@ -0,0 +1,575 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: hu +// variant: qwerty + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', RALT(Key_Backtick)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', RALT(Key_Backtick)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(LSHIFT(Key_Semicolon))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'´', RALT(LSHIFT(Key_9))) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'Á', LSHIFT(Key_Quote)) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(Key_E)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'É', LSHIFT(Key_Semicolon)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(Key_I)) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', LSHIFT(Key_Equals)) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', LSHIFT(Key_0)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', LSHIFT(Key_RightBracket)) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', LSHIFT(Key_Minus)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_Quote) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'é', Key_Semicolon) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_Backtick) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', Key_Equals) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', Key_0) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ú', Key_RightBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', Key_Minus) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ő', LSHIFT(Key_LeftBracket)) /* U+0150, XKB_KEY_Odoubleacute, LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'ő', Key_LeftBracket) /* U+0151, XKB_KEY_odoubleacute, LATIN SMALL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ű', LSHIFT(Key_NonUsPound)) /* U+0170, XKB_KEY_Udoubleacute, LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ű', Key_NonUsPound) /* U+0171, XKB_KEY_udoubleacute, LATIN SMALL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(Key_Y)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_P)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_O)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_U)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_Backtick)) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Adiaeresis, RALT(Key_E)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_U)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(Key_I)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_0)) \ + OP(XKB_KEY_Odoubleacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Udoubleacute, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_Quote) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_acute, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, RALT(Key_C)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_1)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_1)) \ + OP(XKB_KEY_asterisk, RALT(Key_Slash)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, RALT(Key_Semicolon)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_O)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Semicolon) \ + OP(XKB_KEY_endash, RALT(Key_Y)) \ + OP(XKB_KEY_equal, LSHIFT(Key_7)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_4)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_Backtick) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_X)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, Key_Equals) \ + OP(XKB_KEY_odiaeresis, Key_0) \ + OP(XKB_KEY_odoubleacute, Key_LeftBracket) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_3)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_P)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, RALT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_6)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_RightBracket) \ + OP(XKB_KEY_udiaeresis, Key_Minus) \ + OP(XKB_KEY_udoubleacute, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace hu { +namespace qwerty { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace qwerty +} // namespace hu +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/hu/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/hu/standard/keymap.h new file mode 100644 index 0000000000..8ca3d76f01 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/hu/standard/keymap.h @@ -0,0 +1,575 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: hu +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_Backtick) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_M)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_4)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_X)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_C)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_1)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_Backtick) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_M)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_7)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Z)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(LSHIFT(Key_Semicolon))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'´', RALT(LSHIFT(Key_9))) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'Á', LSHIFT(Key_Quote)) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(Key_E)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'É', LSHIFT(Key_Semicolon)) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(Key_I)) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', LSHIFT(Key_Equals)) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', LSHIFT(Key_0)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', LSHIFT(Key_RightBracket)) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', LSHIFT(Key_Minus)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_Quote) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'é', Key_Semicolon) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_NonUsBackslashAndPipe) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', Key_Equals) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', Key_0) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ú', Key_RightBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', Key_Minus) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ő', LSHIFT(Key_LeftBracket)) /* U+0150, XKB_KEY_Odoubleacute, LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'ő', Key_LeftBracket) /* U+0151, XKB_KEY_odoubleacute, LATIN SMALL LETTER O WITH DOUBLE ACUTE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ű', LSHIFT(Key_NonUsPound)) /* U+0170, XKB_KEY_Udoubleacute, LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ű', Key_NonUsPound) /* U+0171, XKB_KEY_udoubleacute, LATIN SMALL LETTER U WITH DOUBLE ACUTE */ \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(Key_Y)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_P)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_O)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_U)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_Backtick) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Adiaeresis, RALT(Key_E)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_U)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(Key_I)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_0)) \ + OP(XKB_KEY_Odoubleacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Udoubleacute, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_Quote) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_acute, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, RALT(Key_C)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_1)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_1)) \ + OP(XKB_KEY_asterisk, RALT(Key_Slash)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, RALT(Key_Semicolon)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_O)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_Semicolon) \ + OP(XKB_KEY_endash, RALT(Key_Y)) \ + OP(XKB_KEY_equal, LSHIFT(Key_7)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_4)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, RALT(Key_M)) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_X)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, Key_Equals) \ + OP(XKB_KEY_odiaeresis, Key_0) \ + OP(XKB_KEY_odoubleacute, Key_LeftBracket) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_3)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_P)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, RALT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_6)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_RightBracket) \ + OP(XKB_KEY_udiaeresis, Key_Minus) \ + OP(XKB_KEY_udoubleacute, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace hu { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace hu +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/id/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/id/standard/keymap.h new file mode 100644 index 0000000000..7f23a98aad --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/id/standard/keymap.h @@ -0,0 +1,413 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: id +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_RightBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_LeftBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', RALT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', RALT(LSHIFT(Key_RightBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(LSHIFT(Key_LeftBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_RightBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_LeftBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', RALT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', RALT(LSHIFT(Key_RightBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(LSHIFT(Key_LeftBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', LSHIFT(Key_M)) \ + OP(L'»', LSHIFT(Key_B)) \ + OP(L'،', Key_Comma) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؍', RALT(LSHIFT(Key_Comma))) \ + OP(L'؛', Key_Semicolon) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', LSHIFT(Key_Q)) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'آ', LSHIFT(Key_NonUsPound)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_U)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', LSHIFT(Key_W)) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_I)) /* U+0625, XKB_KEY_Arabic_hamzaunderalef, ARABIC LETTER ALEF WITH HAMZA BELOW */ \ + OP(L'ئ', LSHIFT(Key_RightBracket)) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', LSHIFT(Key_A)) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_B) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', LSHIFT(Key_P)) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_T) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', LSHIFT(Key_V)) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_J) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', LSHIFT(Key_H)) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_X) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_D) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', LSHIFT(Key_C)) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_R) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_Z) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', LSHIFT(Key_X)) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', LSHIFT(Key_S)) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', LSHIFT(Key_D)) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', LSHIFT(Key_T)) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', LSHIFT(Key_Z)) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', Key_E) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', LSHIFT(Key_G)) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_Minus)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'ف', Key_F) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_Q) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', Key_K) /* U+0643, XKB_KEY_Arabic_kaf, ARABIC LETTER KAF */ \ + OP(L'ل', Key_L) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_M) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_N) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_H) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_W) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', LSHIFT(Key_Y)) /* U+0649, XKB_KEY_Arabic_alefmaksura, ARABIC LETTER ALEF MAKSURA */ \ + OP(L'ي', Key_Y) /* U+064a, XKB_KEY_Arabic_yeh, ARABIC LETTER YEH */ \ + OP(L'ً', Key_LeftBracket) /* U+064b, XKB_KEY_Arabic_fathatan, ARABIC FATHATAN */ \ + OP(L'ٌ', Key_NonUsPound) /* U+064c, XKB_KEY_Arabic_dammatan, ARABIC DAMMATAN */ \ + OP(L'ٍ', Key_RightBracket) /* U+064d, XKB_KEY_Arabic_kasratan, ARABIC KASRATAN */ \ + OP(L'َ', Key_A) /* U+064e, XKB_KEY_Arabic_fatha, ARABIC FATHA */ \ + OP(L'ُ', Key_U) /* U+064f, XKB_KEY_Arabic_damma, ARABIC DAMMA */ \ + OP(L'ِ', Key_I) /* U+0650, XKB_KEY_Arabic_kasra, ARABIC KASRA */ \ + OP(L'ّ', LSHIFT(Key_Backtick)) /* U+0651, XKB_KEY_Arabic_shadda, ARABIC SHADDA */ \ + OP(L'ْ', Key_O) /* U+0652, XKB_KEY_Arabic_sukun, ARABIC SUKUN */ \ + OP(L'ٓ', LSHIFT(Key_L)) /* U+0653, XKB_KEY_Arabic_madda_above, ARABIC MADDAH ABOVE */ \ + OP(L'ٖ', LSHIFT(Key_R)) \ + OP(L'ٗ', LSHIFT(Key_4)) \ + OP(L'٠', Key_0) /* U+0660, XKB_KEY_Arabic_0, ARABIC-INDIC DIGIT ZERO */ \ + OP(L'١', Key_1) /* U+0661, XKB_KEY_Arabic_1, ARABIC-INDIC DIGIT ONE */ \ + OP(L'٢', Key_2) /* U+0662, XKB_KEY_Arabic_2, ARABIC-INDIC DIGIT TWO */ \ + OP(L'٣', Key_3) /* U+0663, XKB_KEY_Arabic_3, ARABIC-INDIC DIGIT THREE */ \ + OP(L'٤', Key_4) /* U+0664, XKB_KEY_Arabic_4, ARABIC-INDIC DIGIT FOUR */ \ + OP(L'٥', Key_5) /* U+0665, XKB_KEY_Arabic_5, ARABIC-INDIC DIGIT FIVE */ \ + OP(L'٦', Key_6) /* U+0666, XKB_KEY_Arabic_6, ARABIC-INDIC DIGIT SIX */ \ + OP(L'٧', Key_7) /* U+0667, XKB_KEY_Arabic_7, ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'٨', Key_8) /* U+0668, XKB_KEY_Arabic_8, ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'٩', Key_9) /* U+0669, XKB_KEY_Arabic_9, ARABIC-INDIC DIGIT NINE */ \ + OP(L'٪', LSHIFT(Key_5)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', RALT(Key_Comma)) \ + OP(L'٬', RALT(Key_Quote)) \ + OP(L'٭', RALT(Key_8)) \ + OP(L'ٰ', Key_Backtick) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٱ', LSHIFT(Key_LeftBracket)) \ + OP(L'چ', Key_C) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ڠ', LSHIFT(Key_F)) \ + OP(L'ڤ', Key_P) /* U+06a4, XKB_KEY_Arabic_veh, ARABIC LETTER VEH */ \ + OP(L'ک', LSHIFT(Key_K)) /* U+06a9, XKB_KEY_Arabic_keheh, ARABIC LETTER KEHEH */ \ + OP(L'ڬ', LSHIFT(Key_J)) \ + OP(L'ڽ', LSHIFT(Key_N)) \ + OP(L'ۆ', LSHIFT(Key_O)) \ + OP(L'ێ', LSHIFT(Key_E)) \ + OP(L'ۏ', Key_V) \ + OP(L'۔', RALT(Key_Period)) /* U+06d4, XKB_KEY_Arabic_fullstop, ARABIC FULL STOP */ \ + OP(L'۝', RALT(LSHIFT(Key_Period))) \ + OP(L'۞', RALT(LSHIFT(Key_8))) \ + OP(L'۩', RALT(LSHIFT(Key_4))) \ + OP(L'ݢ', Key_G) \ + OP(L'﴾', RALT(Key_9)) \ + OP(L'﴿', RALT(Key_0)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_0, Key_0) \ + OP(XKB_KEY_Arabic_1, Key_1) \ + OP(XKB_KEY_Arabic_2, Key_2) \ + OP(XKB_KEY_Arabic_3, Key_3) \ + OP(XKB_KEY_Arabic_4, Key_4) \ + OP(XKB_KEY_Arabic_5, Key_5) \ + OP(XKB_KEY_Arabic_6, Key_6) \ + OP(XKB_KEY_Arabic_7, Key_7) \ + OP(XKB_KEY_Arabic_8, Key_8) \ + OP(XKB_KEY_Arabic_9, Key_9) \ + OP(XKB_KEY_Arabic_ain, Key_E) \ + OP(XKB_KEY_Arabic_alef, LSHIFT(Key_A)) \ + OP(XKB_KEY_Arabic_alefmaksura, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Arabic_beh, Key_B) \ + OP(XKB_KEY_Arabic_comma, Key_Comma) \ + OP(XKB_KEY_Arabic_dad, LSHIFT(Key_D)) \ + OP(XKB_KEY_Arabic_dal, Key_D) \ + OP(XKB_KEY_Arabic_damma, Key_U) \ + OP(XKB_KEY_Arabic_dammatan, Key_NonUsPound) \ + OP(XKB_KEY_Arabic_fatha, Key_A) \ + OP(XKB_KEY_Arabic_fathatan, Key_LeftBracket) \ + OP(XKB_KEY_Arabic_feh, Key_F) \ + OP(XKB_KEY_Arabic_fullstop, RALT(Key_Period)) \ + OP(XKB_KEY_Arabic_ghain, LSHIFT(Key_G)) \ + OP(XKB_KEY_Arabic_ha, Key_H) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_hamza, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_U)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, LSHIFT(Key_W)) \ + OP(XKB_KEY_Arabic_hamzaonyeh, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Arabic_hamzaunderalef, LSHIFT(Key_I)) \ + OP(XKB_KEY_Arabic_jeem, Key_J) \ + OP(XKB_KEY_Arabic_kaf, Key_K) \ + OP(XKB_KEY_Arabic_kasra, Key_I) \ + OP(XKB_KEY_Arabic_kasratan, Key_RightBracket) \ + OP(XKB_KEY_Arabic_keheh, LSHIFT(Key_K)) \ + OP(XKB_KEY_Arabic_khah, Key_X) \ + OP(XKB_KEY_Arabic_lam, Key_L) \ + OP(XKB_KEY_Arabic_madda_above, LSHIFT(Key_L)) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Arabic_meem, Key_M) \ + OP(XKB_KEY_Arabic_noon, Key_N) \ + OP(XKB_KEY_Arabic_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_Arabic_qaf, Key_Q) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_R) \ + OP(XKB_KEY_Arabic_sad, LSHIFT(Key_S)) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, Key_Semicolon) \ + OP(XKB_KEY_Arabic_shadda, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Arabic_sheen, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_sukun, Key_O) \ + OP(XKB_KEY_Arabic_superscript_alef, Key_Backtick) \ + OP(XKB_KEY_Arabic_tah, LSHIFT(Key_T)) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Arabic_tcheh, Key_C) \ + OP(XKB_KEY_Arabic_teh, Key_T) \ + OP(XKB_KEY_Arabic_tehmarbuta, LSHIFT(Key_P)) \ + OP(XKB_KEY_Arabic_thal, LSHIFT(Key_C)) \ + OP(XKB_KEY_Arabic_theh, LSHIFT(Key_V)) \ + OP(XKB_KEY_Arabic_veh, Key_P) \ + OP(XKB_KEY_Arabic_waw, Key_W) \ + OP(XKB_KEY_Arabic_yeh, Key_Y) \ + OP(XKB_KEY_Arabic_zah, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Arabic_zain, Key_Z) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_braceright, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_bracketleft, RALT(Key_RightBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, RALT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace id { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace id +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ie/CloGaelach/keymap.h b/src/kaleidoscope/host_keymap/linux/ie/CloGaelach/keymap.h new file mode 100644 index 0000000000..6b7afe686f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ie/CloGaelach/keymap.h @@ -0,0 +1,613 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ie +// variant: CloGaelach + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_Quote)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_Quote)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(Key_Y)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(Key_Backtick)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_5)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_3)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_9)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_NonUsPound)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', LSHIFT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Equals))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_L)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(LSHIFT(Key_Y))) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_7)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_9))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(Key_0)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_NonUsPound))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_J))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(LSHIFT(Key_K))) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_L))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Slash))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_A))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Quote))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'É', RALT(LSHIFT(Key_E))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(LSHIFT(Key_I))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ó', RALT(LSHIFT(Key_O))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'×', RALT(Key_X)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ú', RALT(LSHIFT(Key_U))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'ß', RALT(LSHIFT(Key_Backtick))) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', RALT(Key_A)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'æ', RALT(Key_Quote)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'é', RALT(Key_E)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', RALT(Key_I)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', RALT(Key_O)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'÷', RALT(Key_Slash)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ú', RALT(Key_U)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'Ċ', RALT(LSHIFT(Key_C))) /* U+010a, XKB_KEY_Cabovedot, LATIN CAPITAL LETTER C WITH DOT ABOVE */ \ + OP(L'ċ', RALT(Key_C)) /* U+010b, XKB_KEY_cabovedot, LATIN SMALL LETTER C WITH DOT ABOVE */ \ + OP(L'Ġ', RALT(LSHIFT(Key_G))) /* U+0120, XKB_KEY_Gabovedot, LATIN CAPITAL LETTER G WITH DOT ABOVE */ \ + OP(L'ġ', RALT(Key_G)) /* U+0121, XKB_KEY_gabovedot, LATIN SMALL LETTER G WITH DOT ABOVE */ \ + OP(L'ı', RALT(Key_J)) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Œ', RALT(LSHIFT(Key_Q))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_Q)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'ſ', RALT(Key_Z)) \ + OP(L'ɼ', RALT(Key_R)) \ + OP(L'Ḃ', RALT(LSHIFT(Key_B))) /* U+1e02, XKB_KEY_Babovedot, LATIN CAPITAL LETTER B WITH DOT ABOVE */ \ + OP(L'ḃ', RALT(Key_B)) /* U+1e03, XKB_KEY_babovedot, LATIN SMALL LETTER B WITH DOT ABOVE */ \ + OP(L'Ḋ', RALT(LSHIFT(Key_D))) /* U+1e0a, XKB_KEY_Dabovedot, LATIN CAPITAL LETTER D WITH DOT ABOVE */ \ + OP(L'ḋ', RALT(Key_D)) /* U+1e0b, XKB_KEY_dabovedot, LATIN SMALL LETTER D WITH DOT ABOVE */ \ + OP(L'Ḟ', RALT(LSHIFT(Key_F))) /* U+1e1e, XKB_KEY_Fabovedot, LATIN CAPITAL LETTER F WITH DOT ABOVE */ \ + OP(L'ḟ', RALT(Key_F)) /* U+1e1f, XKB_KEY_fabovedot, LATIN SMALL LETTER F WITH DOT ABOVE */ \ + OP(L'Ṁ', RALT(LSHIFT(Key_M))) /* U+1e40, XKB_KEY_Mabovedot, LATIN CAPITAL LETTER M WITH DOT ABOVE */ \ + OP(L'ṁ', RALT(Key_M)) /* U+1e41, XKB_KEY_mabovedot, LATIN SMALL LETTER M WITH DOT ABOVE */ \ + OP(L'Ṗ', RALT(LSHIFT(Key_P))) /* U+1e56, XKB_KEY_Pabovedot, LATIN CAPITAL LETTER P WITH DOT ABOVE */ \ + OP(L'ṗ', RALT(Key_P)) /* U+1e57, XKB_KEY_pabovedot, LATIN SMALL LETTER P WITH DOT ABOVE */ \ + OP(L'Ṡ', RALT(LSHIFT(Key_S))) /* U+1e60, XKB_KEY_Sabovedot, LATIN CAPITAL LETTER S WITH DOT ABOVE */ \ + OP(L'ṡ', RALT(Key_S)) /* U+1e61, XKB_KEY_sabovedot, LATIN SMALL LETTER S WITH DOT ABOVE */ \ + OP(L'Ṫ', RALT(LSHIFT(Key_T))) /* U+1e6a, XKB_KEY_Tabovedot, LATIN CAPITAL LETTER T WITH DOT ABOVE */ \ + OP(L'ṫ', RALT(Key_T)) /* U+1e6b, XKB_KEY_tabovedot, LATIN SMALL LETTER T WITH DOT ABOVE */ \ + OP(L'ẛ', RALT(LSHIFT(Key_Z))) \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Minus))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_RightBracket)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_RightBracket))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_Period))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_LeftBracket)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_LeftBracket))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_Comma))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'†', RALT(LSHIFT(Key_5))) /* U+2020, XKB_KEY_dagger, DAGGER */ \ + OP(L'‡', RALT(LSHIFT(Key_Semicolon))) /* U+2021, XKB_KEY_doubledagger, DOUBLE DAGGER */ \ + OP(L'•', RALT(LSHIFT(Key_8))) /* U+2022, XKB_KEY_enfilledcircbullet, BULLET */ \ + OP(L'…', RALT(Key_Semicolon)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‰', RALT(LSHIFT(Key_6))) \ + OP(L'⁊', RALT(LSHIFT(Key_7))) \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(Key_2)) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'∼', RALT(LSHIFT(Key_X))) /* U+223c, XKB_KEY_approximate, TILDE OPERATOR */ \ + OP(L'≠', RALT(Key_Equals)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'≤', RALT(Key_Comma)) /* U+2264, XKB_KEY_lessthanequal, LESS-THAN OR EQUAL TO */ \ + OP(L'≥', RALT(Key_Period)) /* U+2265, XKB_KEY_greaterthanequal, GREATER-THAN OR EQUAL TO */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_Babovedot, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cabovedot, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Dabovedot, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Fabovedot, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gabovedot, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Mabovedot, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_RightGui) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pabovedot, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Sabovedot, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tabovedot, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_A)) \ + OP(XKB_KEY_acute, RALT(Key_L)) \ + OP(XKB_KEY_ae, RALT(Key_Quote)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_approximate, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_babovedot, RALT(Key_B)) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(Key_Backtick)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cabovedot, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_3)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dabovedot, RALT(Key_D)) \ + OP(XKB_KEY_dagger, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_W)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_K)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_caron, RALT(Key_V)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_8)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsBackslashAndPipe)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_N)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(Key_Slash)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubledagger, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, RALT(Key_E)) \ + OP(XKB_KEY_ellipsis, RALT(Key_Semicolon)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_enfilledcircbullet, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fabovedot, RALT(Key_F)) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gabovedot, RALT(Key_G)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_greaterthanequal, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, RALT(Key_I)) \ + OP(XKB_KEY_idotless, RALT(Key_J)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_RightBracket)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_lessthanequal, RALT(Key_Comma)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_mabovedot, RALT(Key_M)) \ + OP(XKB_KEY_masculine, RALT(Key_0)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_multiply, RALT(Key_X)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notequal, RALT(Key_Equals)) \ + OP(XKB_KEY_notsign, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, RALT(Key_O)) \ + OP(XKB_KEY_oe, RALT(Key_Q)) \ + OP(XKB_KEY_onehalf, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_9)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_pabovedot, RALT(Key_P)) \ + OP(XKB_KEY_paragraph, RALT(Key_7)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_sabovedot, RALT(Key_S)) \ + OP(XKB_KEY_section, RALT(Key_5)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_sterling, LSHIFT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_tabovedot, RALT(Key_T)) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_trademark, RALT(Key_2)) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_Y)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ie { +namespace CloGaelach { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace CloGaelach +} // namespace ie +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ie/UnicodeExpert/keymap.h b/src/kaleidoscope/host_keymap/linux/ie/UnicodeExpert/keymap.h new file mode 100644 index 0000000000..8c4d05a0ef --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ie/UnicodeExpert/keymap.h @@ -0,0 +1,487 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ie +// variant: UnicodeExpert + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_Quote)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_Quote)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'£', LSHIFT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(Key_Backtick)) \ + OP(L'¬', LSHIFT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'Á', RALT(LSHIFT(Key_A))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'É', RALT(LSHIFT(Key_E))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(LSHIFT(Key_I))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ó', RALT(LSHIFT(Key_O))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ú', RALT(LSHIFT(Key_U))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'á', RALT(Key_A)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'é', RALT(Key_E)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', RALT(Key_I)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', RALT(Key_O)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ú', RALT(Key_U)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ſ', RALT(Key_Z)) \ + OP(L'ɼ', RALT(Key_R)) \ + OP(L'ẛ', RALT(LSHIFT(Key_Z))) \ + OP(L'⁊', RALT(Key_7)) \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_RightGui) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_H)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_8)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Quote)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(Key_9)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_V)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Comma)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Semicolon)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_2)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsBackslashAndPipe)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_LeftBracket)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(Key_RightBracket)) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Minus)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_0)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_NonUsPound)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, RALT(Key_E)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Spacebar))) \ + OP(XKB_KEY_notsign, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, LSHIFT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ie { +namespace UnicodeExpert { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace UnicodeExpert +} // namespace ie +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ie/ogam/keymap.h b/src/kaleidoscope/host_keymap/linux/ie/ogam/keymap.h new file mode 100644 index 0000000000..19726bee72 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ie/ogam/keymap.h @@ -0,0 +1,216 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ie +// variant: ogam + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', Key_NonUsPound) \ + OP(L'ᚁ', Key_B) \ + OP(L'ᚂ', Key_L) \ + OP(L'ᚃ', Key_F) \ + OP(L'ᚄ', Key_S) \ + OP(L'ᚅ', Key_N) \ + OP(L'ᚆ', Key_H) \ + OP(L'ᚇ', Key_D) \ + OP(L'ᚈ', Key_T) \ + OP(L'ᚉ', Key_C) \ + OP(L'ᚊ', Key_Q) \ + OP(L'ᚋ', Key_M) \ + OP(L'ᚌ', Key_G) \ + OP(L'ᚍ', Key_V) \ + OP(L'ᚎ', Key_Z) \ + OP(L'ᚏ', Key_R) \ + OP(L'ᚐ', Key_A) \ + OP(L'ᚑ', Key_O) \ + OP(L'ᚒ', Key_U) \ + OP(L'ᚓ', Key_E) \ + OP(L'ᚔ', Key_I) \ + OP(L'ᚕ', Key_W) \ + OP(L'ᚖ', Key_K) \ + OP(L'ᚗ', Key_J) \ + OP(L'ᚘ', Key_Y) \ + OP(L'ᚙ', Key_X) \ + OP(L'ᚚ', Key_P) \ + OP(L'᚛', Key_Period) \ + OP(L'᚜', Key_Backtick) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Multi_key, Key_RightGui) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ie { +namespace ogam { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ogam +} // namespace ie +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ie/ogam_is434/keymap.h b/src/kaleidoscope/host_keymap/linux/ie/ogam_is434/keymap.h new file mode 100644 index 0000000000..e003f8d983 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ie/ogam_is434/keymap.h @@ -0,0 +1,450 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ie +// variant: ogam_is434 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('~', LSHIFT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'~', LSHIFT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', LSHIFT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¬', LSHIFT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L' ', RALT(Key_NonUsPound)) \ + OP(L'ᚁ', RALT(Key_B)) \ + OP(L'ᚂ', RALT(Key_L)) \ + OP(L'ᚃ', RALT(Key_F)) \ + OP(L'ᚄ', RALT(Key_S)) \ + OP(L'ᚅ', RALT(Key_N)) \ + OP(L'ᚆ', RALT(Key_H)) \ + OP(L'ᚇ', RALT(Key_D)) \ + OP(L'ᚈ', RALT(Key_T)) \ + OP(L'ᚉ', RALT(Key_C)) \ + OP(L'ᚊ', RALT(Key_Q)) \ + OP(L'ᚋ', RALT(Key_M)) \ + OP(L'ᚌ', RALT(Key_G)) \ + OP(L'ᚍ', RALT(Key_V)) \ + OP(L'ᚎ', RALT(Key_Z)) \ + OP(L'ᚏ', RALT(Key_R)) \ + OP(L'ᚐ', RALT(Key_A)) \ + OP(L'ᚑ', RALT(Key_O)) \ + OP(L'ᚒ', RALT(Key_U)) \ + OP(L'ᚓ', RALT(Key_E)) \ + OP(L'ᚔ', RALT(Key_I)) \ + OP(L'ᚕ', RALT(Key_W)) \ + OP(L'ᚖ', RALT(Key_K)) \ + OP(L'ᚗ', RALT(Key_J)) \ + OP(L'ᚘ', RALT(Key_Y)) \ + OP(L'ᚙ', RALT(Key_X)) \ + OP(L'ᚚ', RALT(Key_P)) \ + OP(L'᚛', RALT(Key_Period)) \ + OP(L'᚜', RALT(Key_Backtick)) \ + OP(L'⁊', RALT(Key_7)) \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Lock, Key_CapsLock) /* XKB_KEY_ISO_Level3_Lock */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_RightGui) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_Lock, Key_ScrollLock) /* XKB_KEY_Shift_Lock, Shift lock */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, LSHIFT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ie { +namespace ogam_is434 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ogam_is434 +} // namespace ie +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ie/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/ie/standard/keymap.h new file mode 100644 index 0000000000..4aa498219d --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ie/standard/keymap.h @@ -0,0 +1,594 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ie +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_Quote)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_Quote)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(Key_Y)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(Key_Backtick)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_5)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(Key_B)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_3)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_9)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_NonUsPound)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', LSHIFT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(Key_M)) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Equals))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_L)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(LSHIFT(Key_Y))) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_7)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_9))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¸', RALT(LSHIFT(Key_C))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(Key_0)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_NonUsPound))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_J))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(LSHIFT(Key_K))) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_L))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Slash))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_A))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Quote))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'É', RALT(LSHIFT(Key_E))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(LSHIFT(Key_I))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', RALT(LSHIFT(Key_O))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'×', RALT(Key_X)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ú', RALT(LSHIFT(Key_U))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', RALT(Key_A)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'æ', RALT(Key_Quote)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'é', RALT(Key_E)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', RALT(Key_I)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ó', RALT(Key_O)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'÷', RALT(Key_Slash)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ú', RALT(Key_U)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ı', RALT(Key_J)) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Œ', RALT(LSHIFT(Key_Q))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_Q)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'ƒ', RALT(Key_F)) \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Minus))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_RightBracket)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_RightBracket))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(Key_P)) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_LeftBracket)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_LeftBracket))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_Comma))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'†', RALT(LSHIFT(Key_5))) /* U+2020, XKB_KEY_dagger, DAGGER */ \ + OP(L'‡', RALT(LSHIFT(Key_Semicolon))) /* U+2021, XKB_KEY_doubledagger, DOUBLE DAGGER */ \ + OP(L'•', RALT(LSHIFT(Key_8))) /* U+2022, XKB_KEY_enfilledcircbullet, BULLET */ \ + OP(L'…', RALT(Key_Semicolon)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‰', RALT(LSHIFT(Key_6))) \ + OP(L'⁊', RALT(LSHIFT(Key_7))) \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(Key_2)) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'∼', RALT(LSHIFT(Key_X))) /* U+223c, XKB_KEY_approximate, TILDE OPERATOR */ \ + OP(L'≠', RALT(Key_Equals)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'≤', RALT(Key_Comma)) /* U+2264, XKB_KEY_lessthanequal, LESS-THAN OR EQUAL TO */ \ + OP(L'≥', RALT(Key_Period)) /* U+2265, XKB_KEY_greaterthanequal, GREATER-THAN OR EQUAL TO */ \ + OP(L'⟨', RALT(Key_Z)) /* U+27e8, XKB_KEY_leftanglebracket, MATHEMATICAL LEFT ANGLE BRACKET */ \ + OP(L'⟩', RALT(LSHIFT(Key_Z))) /* U+27e9, XKB_KEY_rightanglebracket, MATHEMATICAL RIGHT ANGLE BRACKET */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_RightGui) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_A)) \ + OP(XKB_KEY_acute, RALT(Key_L)) \ + OP(XKB_KEY_ae, RALT(Key_Quote)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_approximate, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(Key_Backtick)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_3)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dagger, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_W)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_K)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(Key_V)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_C)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_8)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsBackslashAndPipe)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_N)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_diaeresis, RALT(Key_B)) \ + OP(XKB_KEY_division, RALT(Key_Slash)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubledagger, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, RALT(Key_E)) \ + OP(XKB_KEY_ellipsis, RALT(Key_Semicolon)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_enfilledcircbullet, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_greaterthanequal, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, RALT(Key_I)) \ + OP(XKB_KEY_idotless, RALT(Key_J)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftanglebracket, RALT(Key_Z)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_RightBracket)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_lessthanequal, RALT(Key_Comma)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(Key_M)) \ + OP(XKB_KEY_masculine, RALT(Key_0)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_multiply, RALT(Key_X)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notequal, RALT(Key_Equals)) \ + OP(XKB_KEY_notsign, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, RALT(Key_O)) \ + OP(XKB_KEY_oe, RALT(Key_Q)) \ + OP(XKB_KEY_onehalf, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_9)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_7)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightanglebracket, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_5)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_singlelowquotemark, RALT(Key_P)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_trademark, RALT(Key_2)) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_Y)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ie { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace ie +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/il/biblical/keymap.h b/src/kaleidoscope/host_keymap/linux/il/biblical/keymap.h new file mode 100644 index 0000000000..78977c55a5 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/il/biblical/keymap.h @@ -0,0 +1,320 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: il +// variant: biblical + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(']', Key_LeftBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L']', Key_LeftBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'̇', Key_Q) \ + OP(L'֑', LSHIFT(Key_Comma)) \ + OP(L'֒', LSHIFT(Key_3)) \ + OP(L'֓', LSHIFT(Key_T)) \ + OP(L'֔', LSHIFT(Key_P)) \ + OP(L'֕', LSHIFT(Key_O)) \ + OP(L'֖', LSHIFT(Key_Period)) \ + OP(L'֗', LSHIFT(Key_LeftBracket)) \ + OP(L'֘', LSHIFT(Key_RightBracket)) \ + OP(L'֙', LSHIFT(Key_2)) \ + OP(L'֚', Key_Quote) \ + OP(L'֛', LSHIFT(Key_M)) \ + OP(L'֜', LSHIFT(Key_U)) \ + OP(L'֝', LSHIFT(Key_0)) \ + OP(L'֞', LSHIFT(Key_Y)) \ + OP(L'֟', LSHIFT(Key_R)) \ + OP(L'֠', LSHIFT(Key_Minus)) \ + OP(L'֡', LSHIFT(Key_I)) \ + OP(L'֣', LSHIFT(Key_Slash)) \ + OP(L'֤', LSHIFT(Key_X)) \ + OP(L'֥', LSHIFT(Key_B)) \ + OP(L'֦', LSHIFT(Key_V)) \ + OP(L'֧', LSHIFT(Key_N)) \ + OP(L'֨', LSHIFT(Key_NonUsPound)) \ + OP(L'֩', LSHIFT(Key_1)) \ + OP(L'֪', LSHIFT(Key_C)) \ + OP(L'֫', LSHIFT(Key_E)) \ + OP(L'֬', LSHIFT(Key_W)) \ + OP(L'֭', Key_Slash) \ + OP(L'֮', LSHIFT(Key_Backtick)) \ + OP(L'֯', LSHIFT(Key_4)) \ + OP(L'ְ', LSHIFT(Key_S)) \ + OP(L'ֱ', LSHIFT(Key_G)) \ + OP(L'ֲ', LSHIFT(Key_Semicolon)) \ + OP(L'ֳ', LSHIFT(Key_K)) \ + OP(L'ִ', LSHIFT(Key_F)) \ + OP(L'ֵ', LSHIFT(Key_J)) \ + OP(L'ֶ', LSHIFT(Key_H)) \ + OP(L'ַ', LSHIFT(Key_Quote)) \ + OP(L'ָ', LSHIFT(Key_L)) \ + OP(L'ֹ', LSHIFT(Key_6)) \ + OP(L'ֺ', LSHIFT(Key_5)) \ + OP(L'ֻ', LSHIFT(Key_D)) \ + OP(L'ּ', LSHIFT(Key_Equals)) \ + OP(L'ֽ', LSHIFT(Key_A)) \ + OP(L'־', Key_Minus) \ + OP(L'ֿ', LSHIFT(Key_7)) \ + OP(L'׀', Key_NonUsPound) \ + OP(L'ׁ', LSHIFT(Key_9)) \ + OP(L'ׂ', LSHIFT(Key_8)) \ + OP(L'׃', Key_Backtick) \ + OP(L'ׄ', LSHIFT(Key_Q)) \ + OP(L'ׅ', LSHIFT(Key_Z)) \ + OP(L'א', Key_T) /* U+05d0, XKB_KEY_hebrew_aleph, HEBREW LETTER ALEF */ \ + OP(L'ב', Key_C) /* U+05d1, XKB_KEY_hebrew_bet, HEBREW LETTER BET */ \ + OP(L'ג', Key_D) /* U+05d2, XKB_KEY_hebrew_gimel, HEBREW LETTER GIMEL */ \ + OP(L'ד', Key_S) /* U+05d3, XKB_KEY_hebrew_dalet, HEBREW LETTER DALET */ \ + OP(L'ה', Key_V) /* U+05d4, XKB_KEY_hebrew_he, HEBREW LETTER HE */ \ + OP(L'ו', Key_U) /* U+05d5, XKB_KEY_hebrew_waw, HEBREW LETTER VAV */ \ + OP(L'ז', Key_Z) /* U+05d6, XKB_KEY_hebrew_zain, HEBREW LETTER ZAYIN */ \ + OP(L'ח', Key_J) /* U+05d7, XKB_KEY_hebrew_chet, HEBREW LETTER HET */ \ + OP(L'ט', Key_Y) /* U+05d8, XKB_KEY_hebrew_tet, HEBREW LETTER TET */ \ + OP(L'י', Key_H) /* U+05d9, XKB_KEY_hebrew_yod, HEBREW LETTER YOD */ \ + OP(L'ך', Key_L) /* U+05da, XKB_KEY_hebrew_finalkaph, HEBREW LETTER FINAL KAF */ \ + OP(L'כ', Key_F) /* U+05db, XKB_KEY_hebrew_kaph, HEBREW LETTER KAF */ \ + OP(L'ל', Key_K) /* U+05dc, XKB_KEY_hebrew_lamed, HEBREW LETTER LAMED */ \ + OP(L'ם', Key_O) /* U+05dd, XKB_KEY_hebrew_finalmem, HEBREW LETTER FINAL MEM */ \ + OP(L'מ', Key_N) /* U+05de, XKB_KEY_hebrew_mem, HEBREW LETTER MEM */ \ + OP(L'ן', Key_I) /* U+05df, XKB_KEY_hebrew_finalnun, HEBREW LETTER FINAL NUN */ \ + OP(L'נ', Key_B) /* U+05e0, XKB_KEY_hebrew_nun, HEBREW LETTER NUN */ \ + OP(L'ס', Key_X) /* U+05e1, XKB_KEY_hebrew_samech, HEBREW LETTER SAMEKH */ \ + OP(L'ע', Key_G) /* U+05e2, XKB_KEY_hebrew_ayin, HEBREW LETTER AYIN */ \ + OP(L'ף', Key_Semicolon) /* U+05e3, XKB_KEY_hebrew_finalpe, HEBREW LETTER FINAL PE */ \ + OP(L'פ', Key_P) /* U+05e4, XKB_KEY_hebrew_pe, HEBREW LETTER PE */ \ + OP(L'ץ', Key_Period) /* U+05e5, XKB_KEY_hebrew_finalzade, HEBREW LETTER FINAL TSADI */ \ + OP(L'צ', Key_M) /* U+05e6, XKB_KEY_hebrew_zade, HEBREW LETTER TSADI */ \ + OP(L'ק', Key_E) /* U+05e7, XKB_KEY_hebrew_qoph, HEBREW LETTER QOF */ \ + OP(L'ר', Key_R) /* U+05e8, XKB_KEY_hebrew_resh, HEBREW LETTER RESH */ \ + OP(L'ש', Key_A) /* U+05e9, XKB_KEY_hebrew_shin, HEBREW LETTER SHIN */ \ + OP(L'ת', Key_Comma) /* U+05ea, XKB_KEY_hebrew_taw, HEBREW LETTER TAV */ \ + OP(L'׳', Key_W) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_bracketleft, Key_RightBracket) \ + OP(XKB_KEY_bracketright, Key_LeftBracket) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_hebrew_aleph, Key_T) \ + OP(XKB_KEY_hebrew_ayin, Key_G) \ + OP(XKB_KEY_hebrew_bet, Key_C) /* XKB_KEY_hebrew_beth, deprecated */ \ + OP(XKB_KEY_hebrew_chet, Key_J) /* XKB_KEY_hebrew_het, deprecated */ \ + OP(XKB_KEY_hebrew_dalet, Key_S) /* XKB_KEY_hebrew_daleth, deprecated */ \ + OP(XKB_KEY_hebrew_finalkaph, Key_L) \ + OP(XKB_KEY_hebrew_finalmem, Key_O) \ + OP(XKB_KEY_hebrew_finalnun, Key_I) \ + OP(XKB_KEY_hebrew_finalpe, Key_Semicolon) \ + OP(XKB_KEY_hebrew_finalzade, Key_Period) /* XKB_KEY_hebrew_finalzadi, deprecated */ \ + OP(XKB_KEY_hebrew_gimel, Key_D) /* XKB_KEY_hebrew_gimmel, deprecated */ \ + OP(XKB_KEY_hebrew_he, Key_V) \ + OP(XKB_KEY_hebrew_kaph, Key_F) \ + OP(XKB_KEY_hebrew_lamed, Key_K) \ + OP(XKB_KEY_hebrew_mem, Key_N) \ + OP(XKB_KEY_hebrew_nun, Key_B) \ + OP(XKB_KEY_hebrew_pe, Key_P) \ + OP(XKB_KEY_hebrew_qoph, Key_E) /* XKB_KEY_hebrew_kuf, deprecated */ \ + OP(XKB_KEY_hebrew_resh, Key_R) \ + OP(XKB_KEY_hebrew_samech, Key_X) /* XKB_KEY_hebrew_samekh, deprecated */ \ + OP(XKB_KEY_hebrew_shin, Key_A) \ + OP(XKB_KEY_hebrew_taw, Key_Comma) /* XKB_KEY_hebrew_taf, deprecated */ \ + OP(XKB_KEY_hebrew_tet, Key_Y) /* XKB_KEY_hebrew_teth, deprecated */ \ + OP(XKB_KEY_hebrew_waw, Key_U) \ + OP(XKB_KEY_hebrew_yod, Key_H) \ + OP(XKB_KEY_hebrew_zade, Key_M) /* XKB_KEY_hebrew_zadi, deprecated */ \ + OP(XKB_KEY_hebrew_zain, Key_Z) /* XKB_KEY_hebrew_zayin, deprecated */ \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace il { +namespace biblical { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace biblical +} // namespace il +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/il/biblicalSIL/keymap.h b/src/kaleidoscope/host_keymap/linux/il/biblicalSIL/keymap.h new file mode 100644 index 0000000000..dd8c8daf0c --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/il/biblicalSIL/keymap.h @@ -0,0 +1,312 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: il +// variant: biblicalSIL + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(']', Key_LeftBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L']', Key_LeftBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'֗', LSHIFT(Key_Q)) \ + OP(L'֘', LSHIFT(Key_2)) \ + OP(L'֜', LSHIFT(Key_4)) \ + OP(L'֝', LSHIFT(Key_8)) \ + OP(L'֞', LSHIFT(Key_5)) \ + OP(L'֟', LSHIFT(Key_Y)) \ + OP(L'֨', LSHIFT(Key_3)) \ + OP(L'֬', LSHIFT(Key_7)) \ + OP(L'ְ', Key_Semicolon) \ + OP(L'ִ', Key_I) \ + OP(L'ֵ', LSHIFT(Key_E)) \ + OP(L'ֶ', Key_E) \ + OP(L'ַ', Key_A) \ + OP(L'ָ', LSHIFT(Key_A)) \ + OP(L'ֹ', Key_O) \ + OP(L'ֺ', LSHIFT(Key_O)) \ + OP(L'ֻ', Key_U) \ + OP(L'ּ', Key_Equals) \ + OP(L'־', Key_Minus) \ + OP(L'׀', Key_NonUsPound) \ + OP(L'א', LSHIFT(Key_Period)) \ + OP(L'ב', Key_B) /* U+05d1, XKB_KEY_hebrew_bet, HEBREW LETTER BET */ \ + OP(L'ג', Key_G) /* U+05d2, XKB_KEY_hebrew_gimel, HEBREW LETTER GIMEL */ \ + OP(L'ד', Key_D) /* U+05d3, XKB_KEY_hebrew_dalet, HEBREW LETTER DALET */ \ + OP(L'ה', Key_H) /* U+05d4, XKB_KEY_hebrew_he, HEBREW LETTER HE */ \ + OP(L'ו', Key_W) /* U+05d5, XKB_KEY_hebrew_waw, HEBREW LETTER VAV */ \ + OP(L'ז', Key_Z) /* U+05d6, XKB_KEY_hebrew_zain, HEBREW LETTER ZAYIN */ \ + OP(L'ח', Key_X) /* U+05d7, XKB_KEY_hebrew_chet, HEBREW LETTER HET */ \ + OP(L'ט', Key_V) /* U+05d8, XKB_KEY_hebrew_tet, HEBREW LETTER TET */ \ + OP(L'י', Key_Y) /* U+05d9, XKB_KEY_hebrew_yod, HEBREW LETTER YOD */ \ + OP(L'ך', LSHIFT(Key_K)) /* U+05da, XKB_KEY_hebrew_finalkaph, HEBREW LETTER FINAL KAF */ \ + OP(L'כ', Key_K) /* U+05db, XKB_KEY_hebrew_kaph, HEBREW LETTER KAF */ \ + OP(L'ל', Key_L) /* U+05dc, XKB_KEY_hebrew_lamed, HEBREW LETTER LAMED */ \ + OP(L'ם', LSHIFT(Key_M)) /* U+05dd, XKB_KEY_hebrew_finalmem, HEBREW LETTER FINAL MEM */ \ + OP(L'מ', Key_M) /* U+05de, XKB_KEY_hebrew_mem, HEBREW LETTER MEM */ \ + OP(L'ן', LSHIFT(Key_N)) /* U+05df, XKB_KEY_hebrew_finalnun, HEBREW LETTER FINAL NUN */ \ + OP(L'נ', Key_N) /* U+05e0, XKB_KEY_hebrew_nun, HEBREW LETTER NUN */ \ + OP(L'ס', Key_S) /* U+05e1, XKB_KEY_hebrew_samech, HEBREW LETTER SAMEKH */ \ + OP(L'ע', LSHIFT(Key_Comma)) \ + OP(L'ף', LSHIFT(Key_P)) /* U+05e3, XKB_KEY_hebrew_finalpe, HEBREW LETTER FINAL PE */ \ + OP(L'פ', Key_P) /* U+05e4, XKB_KEY_hebrew_pe, HEBREW LETTER PE */ \ + OP(L'ץ', LSHIFT(Key_C)) \ + OP(L'צ', Key_C) /* U+05e6, XKB_KEY_hebrew_zade, HEBREW LETTER TSADI */ \ + OP(L'ק', Key_Q) /* U+05e7, XKB_KEY_hebrew_qoph, HEBREW LETTER QOF */ \ + OP(L'ר', Key_R) /* U+05e8, XKB_KEY_hebrew_resh, HEBREW LETTER RESH */ \ + OP(L'ש', LSHIFT(Key_S)) \ + OP(L'ת', Key_T) /* U+05ea, XKB_KEY_hebrew_taw, HEBREW LETTER TAV */ \ + OP(L'״', LSHIFT(Key_Semicolon)) \ + OP(L'–', LSHIFT(Key_Minus)) \ + OP(L'’', Key_Quote) \ + OP(L'”', LSHIFT(Key_Quote)) \ + OP(L'₪', LSHIFT(Key_Backtick)) /* U+20aa, XKB_KEY_NewSheqelSign, NEW SHEQEL SIGN */ \ + OP(L'€', Key_Backtick) \ + OP(L'שׁ', Key_J) \ + OP(L'שׂ', Key_F) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_NewSheqelSign, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_braceleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketleft, Key_RightBracket) \ + OP(XKB_KEY_bracketright, Key_LeftBracket) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_hebrew_bet, Key_B) /* XKB_KEY_hebrew_beth, deprecated */ \ + OP(XKB_KEY_hebrew_chet, Key_X) /* XKB_KEY_hebrew_het, deprecated */ \ + OP(XKB_KEY_hebrew_dalet, Key_D) /* XKB_KEY_hebrew_daleth, deprecated */ \ + OP(XKB_KEY_hebrew_finalkaph, LSHIFT(Key_K)) \ + OP(XKB_KEY_hebrew_finalmem, LSHIFT(Key_M)) \ + OP(XKB_KEY_hebrew_finalnun, LSHIFT(Key_N)) \ + OP(XKB_KEY_hebrew_finalpe, LSHIFT(Key_P)) \ + OP(XKB_KEY_hebrew_gimel, Key_G) /* XKB_KEY_hebrew_gimmel, deprecated */ \ + OP(XKB_KEY_hebrew_he, Key_H) \ + OP(XKB_KEY_hebrew_kaph, Key_K) \ + OP(XKB_KEY_hebrew_lamed, Key_L) \ + OP(XKB_KEY_hebrew_mem, Key_M) \ + OP(XKB_KEY_hebrew_nun, Key_N) \ + OP(XKB_KEY_hebrew_pe, Key_P) \ + OP(XKB_KEY_hebrew_qoph, Key_Q) /* XKB_KEY_hebrew_kuf, deprecated */ \ + OP(XKB_KEY_hebrew_resh, Key_R) \ + OP(XKB_KEY_hebrew_samech, Key_S) /* XKB_KEY_hebrew_samekh, deprecated */ \ + OP(XKB_KEY_hebrew_shin, LSHIFT(Key_F)) \ + OP(XKB_KEY_hebrew_taw, Key_T) /* XKB_KEY_hebrew_taf, deprecated */ \ + OP(XKB_KEY_hebrew_tet, Key_V) /* XKB_KEY_hebrew_teth, deprecated */ \ + OP(XKB_KEY_hebrew_waw, Key_W) \ + OP(XKB_KEY_hebrew_yod, Key_Y) \ + OP(XKB_KEY_hebrew_zade, Key_C) /* XKB_KEY_hebrew_zadi, deprecated */ \ + OP(XKB_KEY_hebrew_zain, Key_Z) /* XKB_KEY_hebrew_zayin, deprecated */ \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace il { +namespace biblicalSIL { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace biblicalSIL +} // namespace il +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/il/lyx/keymap.h b/src/kaleidoscope/host_keymap/linux/il/lyx/keymap.h new file mode 100644 index 0000000000..296a9b3c59 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/il/lyx/keymap.h @@ -0,0 +1,350 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: il +// variant: lyx + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_W) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Quote) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Q) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Backtick) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Comma)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_LeftBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_W) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Quote) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Q) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Backtick) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Comma)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_LeftBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'ְ', LSHIFT(Key_A)) \ + OP(L'ֱ', LSHIFT(Key_V)) \ + OP(L'ֲ', LSHIFT(Key_B)) \ + OP(L'ֳ', LSHIFT(Key_N)) \ + OP(L'ִ', LSHIFT(Key_J)) \ + OP(L'ֵ', LSHIFT(Key_M)) \ + OP(L'ֶ', LSHIFT(Key_X)) \ + OP(L'ַ', LSHIFT(Key_P)) \ + OP(L'ָ', LSHIFT(Key_E)) \ + OP(L'ֹ', LSHIFT(Key_U)) \ + OP(L'ֻ', LSHIFT(Key_C)) \ + OP(L'ּ', LSHIFT(Key_R)) \ + OP(L'־', LSHIFT(Key_Minus)) \ + OP(L'ׁ', LSHIFT(Key_H)) \ + OP(L'ׂ', LSHIFT(Key_G)) \ + OP(L'א', Key_T) /* U+05d0, XKB_KEY_hebrew_aleph, HEBREW LETTER ALEF */ \ + OP(L'ב', Key_C) /* U+05d1, XKB_KEY_hebrew_bet, HEBREW LETTER BET */ \ + OP(L'ג', Key_D) /* U+05d2, XKB_KEY_hebrew_gimel, HEBREW LETTER GIMEL */ \ + OP(L'ד', Key_S) /* U+05d3, XKB_KEY_hebrew_dalet, HEBREW LETTER DALET */ \ + OP(L'ה', Key_V) /* U+05d4, XKB_KEY_hebrew_he, HEBREW LETTER HE */ \ + OP(L'ו', Key_U) /* U+05d5, XKB_KEY_hebrew_waw, HEBREW LETTER VAV */ \ + OP(L'ז', Key_Z) /* U+05d6, XKB_KEY_hebrew_zain, HEBREW LETTER ZAYIN */ \ + OP(L'ח', Key_J) /* U+05d7, XKB_KEY_hebrew_chet, HEBREW LETTER HET */ \ + OP(L'ט', Key_Y) /* U+05d8, XKB_KEY_hebrew_tet, HEBREW LETTER TET */ \ + OP(L'י', Key_H) /* U+05d9, XKB_KEY_hebrew_yod, HEBREW LETTER YOD */ \ + OP(L'ך', Key_L) /* U+05da, XKB_KEY_hebrew_finalkaph, HEBREW LETTER FINAL KAF */ \ + OP(L'כ', Key_F) /* U+05db, XKB_KEY_hebrew_kaph, HEBREW LETTER KAF */ \ + OP(L'ל', Key_K) /* U+05dc, XKB_KEY_hebrew_lamed, HEBREW LETTER LAMED */ \ + OP(L'ם', Key_O) /* U+05dd, XKB_KEY_hebrew_finalmem, HEBREW LETTER FINAL MEM */ \ + OP(L'מ', Key_N) /* U+05de, XKB_KEY_hebrew_mem, HEBREW LETTER MEM */ \ + OP(L'ן', Key_I) /* U+05df, XKB_KEY_hebrew_finalnun, HEBREW LETTER FINAL NUN */ \ + OP(L'נ', Key_B) /* U+05e0, XKB_KEY_hebrew_nun, HEBREW LETTER NUN */ \ + OP(L'ס', Key_X) /* U+05e1, XKB_KEY_hebrew_samech, HEBREW LETTER SAMEKH */ \ + OP(L'ע', Key_G) /* U+05e2, XKB_KEY_hebrew_ayin, HEBREW LETTER AYIN */ \ + OP(L'ף', Key_Semicolon) /* U+05e3, XKB_KEY_hebrew_finalpe, HEBREW LETTER FINAL PE */ \ + OP(L'פ', Key_P) /* U+05e4, XKB_KEY_hebrew_pe, HEBREW LETTER PE */ \ + OP(L'ץ', Key_Period) /* U+05e5, XKB_KEY_hebrew_finalzade, HEBREW LETTER FINAL TSADI */ \ + OP(L'צ', Key_M) /* U+05e6, XKB_KEY_hebrew_zade, HEBREW LETTER TSADI */ \ + OP(L'ק', Key_E) /* U+05e7, XKB_KEY_hebrew_qoph, HEBREW LETTER QOF */ \ + OP(L'ר', Key_R) /* U+05e8, XKB_KEY_hebrew_resh, HEBREW LETTER RESH */ \ + OP(L'ש', Key_A) /* U+05e9, XKB_KEY_hebrew_shin, HEBREW LETTER SHIN */ \ + OP(L'ת', Key_Comma) /* U+05ea, XKB_KEY_hebrew_taw, HEBREW LETTER TAV */ \ + OP(L'‎', LSHIFT(Key_T)) \ + OP(L'‏', LSHIFT(Key_Y)) \ + OP(L'₪', LSHIFT(Key_K)) /* U+20aa, XKB_KEY_NewSheqelSign, NEW SHEQEL SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_NewSheqelSign, LSHIFT(Key_K)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_W) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketleft, Key_RightBracket) \ + OP(XKB_KEY_bracketright, Key_LeftBracket) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Quote) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_hebrew_aleph, Key_T) \ + OP(XKB_KEY_hebrew_ayin, Key_G) \ + OP(XKB_KEY_hebrew_bet, Key_C) /* XKB_KEY_hebrew_beth, deprecated */ \ + OP(XKB_KEY_hebrew_chet, Key_J) /* XKB_KEY_hebrew_het, deprecated */ \ + OP(XKB_KEY_hebrew_dalet, Key_S) /* XKB_KEY_hebrew_daleth, deprecated */ \ + OP(XKB_KEY_hebrew_finalkaph, Key_L) \ + OP(XKB_KEY_hebrew_finalmem, Key_O) \ + OP(XKB_KEY_hebrew_finalnun, Key_I) \ + OP(XKB_KEY_hebrew_finalpe, Key_Semicolon) \ + OP(XKB_KEY_hebrew_finalzade, Key_Period) /* XKB_KEY_hebrew_finalzadi, deprecated */ \ + OP(XKB_KEY_hebrew_gimel, Key_D) /* XKB_KEY_hebrew_gimmel, deprecated */ \ + OP(XKB_KEY_hebrew_he, Key_V) \ + OP(XKB_KEY_hebrew_kaph, Key_F) \ + OP(XKB_KEY_hebrew_lamed, Key_K) \ + OP(XKB_KEY_hebrew_mem, Key_N) \ + OP(XKB_KEY_hebrew_nun, Key_B) \ + OP(XKB_KEY_hebrew_pe, Key_P) \ + OP(XKB_KEY_hebrew_qoph, Key_E) /* XKB_KEY_hebrew_kuf, deprecated */ \ + OP(XKB_KEY_hebrew_resh, Key_R) \ + OP(XKB_KEY_hebrew_samech, Key_X) /* XKB_KEY_hebrew_samekh, deprecated */ \ + OP(XKB_KEY_hebrew_shin, Key_A) \ + OP(XKB_KEY_hebrew_taw, Key_Comma) /* XKB_KEY_hebrew_taf, deprecated */ \ + OP(XKB_KEY_hebrew_tet, Key_Y) /* XKB_KEY_hebrew_teth, deprecated */ \ + OP(XKB_KEY_hebrew_waw, Key_U) \ + OP(XKB_KEY_hebrew_yod, Key_H) \ + OP(XKB_KEY_hebrew_zade, Key_M) /* XKB_KEY_hebrew_zadi, deprecated */ \ + OP(XKB_KEY_hebrew_zain, Key_Z) /* XKB_KEY_hebrew_zayin, deprecated */ \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_semicolon, Key_Backtick) \ + OP(XKB_KEY_slash, Key_Q) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace il { +namespace lyx { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace lyx +} // namespace il +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/il/phonetic/keymap.h b/src/kaleidoscope/host_keymap/linux/il/phonetic/keymap.h new file mode 100644 index 0000000000..355a791512 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/il/phonetic/keymap.h @@ -0,0 +1,257 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: il +// variant: phonetic + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'א', Key_E) /* U+05d0, XKB_KEY_hebrew_aleph, HEBREW LETTER ALEF */ \ + OP(L'ב', Key_B) /* U+05d1, XKB_KEY_hebrew_bet, HEBREW LETTER BET */ \ + OP(L'ג', Key_G) /* U+05d2, XKB_KEY_hebrew_gimel, HEBREW LETTER GIMEL */ \ + OP(L'ד', Key_D) /* U+05d3, XKB_KEY_hebrew_dalet, HEBREW LETTER DALET */ \ + OP(L'ה', Key_H) /* U+05d4, XKB_KEY_hebrew_he, HEBREW LETTER HE */ \ + OP(L'ו', Key_W) /* U+05d5, XKB_KEY_hebrew_waw, HEBREW LETTER VAV */ \ + OP(L'ז', Key_Z) /* U+05d6, XKB_KEY_hebrew_zain, HEBREW LETTER ZAYIN */ \ + OP(L'ח', Key_X) /* U+05d7, XKB_KEY_hebrew_chet, HEBREW LETTER HET */ \ + OP(L'ט', LSHIFT(Key_T)) /* U+05d8, XKB_KEY_hebrew_tet, HEBREW LETTER TET */ \ + OP(L'י', Key_I) /* U+05d9, XKB_KEY_hebrew_yod, HEBREW LETTER YOD */ \ + OP(L'ך', LSHIFT(Key_K)) /* U+05da, XKB_KEY_hebrew_finalkaph, HEBREW LETTER FINAL KAF */ \ + OP(L'כ', Key_K) /* U+05db, XKB_KEY_hebrew_kaph, HEBREW LETTER KAF */ \ + OP(L'ל', Key_L) /* U+05dc, XKB_KEY_hebrew_lamed, HEBREW LETTER LAMED */ \ + OP(L'ם', LSHIFT(Key_M)) /* U+05dd, XKB_KEY_hebrew_finalmem, HEBREW LETTER FINAL MEM */ \ + OP(L'מ', Key_M) /* U+05de, XKB_KEY_hebrew_mem, HEBREW LETTER MEM */ \ + OP(L'ן', LSHIFT(Key_N)) /* U+05df, XKB_KEY_hebrew_finalnun, HEBREW LETTER FINAL NUN */ \ + OP(L'נ', Key_N) /* U+05e0, XKB_KEY_hebrew_nun, HEBREW LETTER NUN */ \ + OP(L'ס', Key_O) /* U+05e1, XKB_KEY_hebrew_samech, HEBREW LETTER SAMEKH */ \ + OP(L'ע', Key_Y) /* U+05e2, XKB_KEY_hebrew_ayin, HEBREW LETTER AYIN */ \ + OP(L'ף', LSHIFT(Key_P)) /* U+05e3, XKB_KEY_hebrew_finalpe, HEBREW LETTER FINAL PE */ \ + OP(L'פ', Key_P) /* U+05e4, XKB_KEY_hebrew_pe, HEBREW LETTER PE */ \ + OP(L'ץ', LSHIFT(Key_C)) /* U+05e5, XKB_KEY_hebrew_finalzade, HEBREW LETTER FINAL TSADI */ \ + OP(L'צ', Key_C) /* U+05e6, XKB_KEY_hebrew_zade, HEBREW LETTER TSADI */ \ + OP(L'ק', Key_Q) /* U+05e7, XKB_KEY_hebrew_qoph, HEBREW LETTER QOF */ \ + OP(L'ר', Key_R) /* U+05e8, XKB_KEY_hebrew_resh, HEBREW LETTER RESH */ \ + OP(L'ש', Key_S) /* U+05e9, XKB_KEY_hebrew_shin, HEBREW LETTER SHIN */ \ + OP(L'ת', Key_T) /* U+05ea, XKB_KEY_hebrew_taw, HEBREW LETTER TAV */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_hebrew_aleph, Key_E) \ + OP(XKB_KEY_hebrew_ayin, Key_Y) \ + OP(XKB_KEY_hebrew_bet, Key_B) /* XKB_KEY_hebrew_beth, deprecated */ \ + OP(XKB_KEY_hebrew_chet, Key_X) /* XKB_KEY_hebrew_het, deprecated */ \ + OP(XKB_KEY_hebrew_dalet, Key_D) /* XKB_KEY_hebrew_daleth, deprecated */ \ + OP(XKB_KEY_hebrew_finalkaph, LSHIFT(Key_K)) \ + OP(XKB_KEY_hebrew_finalmem, LSHIFT(Key_M)) \ + OP(XKB_KEY_hebrew_finalnun, LSHIFT(Key_N)) \ + OP(XKB_KEY_hebrew_finalpe, LSHIFT(Key_P)) \ + OP(XKB_KEY_hebrew_finalzade, LSHIFT(Key_C)) /* XKB_KEY_hebrew_finalzadi, deprecated */ \ + OP(XKB_KEY_hebrew_gimel, Key_G) /* XKB_KEY_hebrew_gimmel, deprecated */ \ + OP(XKB_KEY_hebrew_he, Key_H) \ + OP(XKB_KEY_hebrew_kaph, Key_K) \ + OP(XKB_KEY_hebrew_lamed, Key_L) \ + OP(XKB_KEY_hebrew_mem, Key_M) \ + OP(XKB_KEY_hebrew_nun, Key_N) \ + OP(XKB_KEY_hebrew_pe, Key_P) \ + OP(XKB_KEY_hebrew_qoph, Key_Q) /* XKB_KEY_hebrew_kuf, deprecated */ \ + OP(XKB_KEY_hebrew_resh, Key_R) \ + OP(XKB_KEY_hebrew_samech, Key_O) /* XKB_KEY_hebrew_samekh, deprecated */ \ + OP(XKB_KEY_hebrew_shin, Key_S) \ + OP(XKB_KEY_hebrew_taw, Key_T) /* XKB_KEY_hebrew_taf, deprecated */ \ + OP(XKB_KEY_hebrew_tet, LSHIFT(Key_T)) /* XKB_KEY_hebrew_teth, deprecated */ \ + OP(XKB_KEY_hebrew_waw, Key_W) \ + OP(XKB_KEY_hebrew_yod, Key_I) \ + OP(XKB_KEY_hebrew_zade, Key_C) /* XKB_KEY_hebrew_zadi, deprecated */ \ + OP(XKB_KEY_hebrew_zain, Key_Z) /* XKB_KEY_hebrew_zayin, deprecated */ \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace il { +namespace phonetic { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace phonetic +} // namespace il +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/il/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/il/standard/keymap.h new file mode 100644 index 0000000000..368e25f796 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/il/standard/keymap.h @@ -0,0 +1,459 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: il +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_W) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Quote) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Q) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Backtick) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Comma)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_LeftBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_W) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Quote) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Q) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Backtick) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Comma)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_LeftBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'°', RALT(Key_5)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'×', RALT(Key_8)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(Key_Slash)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'֫', RALT(Key_6)) \ + OP(L'ְ', RALT(Key_A)) \ + OP(L'ֱ', RALT(Key_C)) \ + OP(L'ֲ', RALT(Key_LeftBracket)) \ + OP(L'ֳ', RALT(Key_R)) \ + OP(L'ִ', RALT(Key_J)) \ + OP(L'ֵ', RALT(Key_M)) \ + OP(L'ֶ', RALT(Key_X)) \ + OP(L'ַ', RALT(Key_P)) \ + OP(L'ָ', RALT(Key_E)) \ + OP(L'ֹ', RALT(Key_U)) \ + OP(L'ֻ', RALT(Key_NonUsPound)) \ + OP(L'ּ', RALT(Key_S)) \ + OP(L'ֽ', RALT(Key_7)) \ + OP(L'־', RALT(Key_Minus)) \ + OP(L'ֿ', RALT(Key_RightBracket)) \ + OP(L'ׁ', RALT(Key_W)) \ + OP(L'ׂ', RALT(Key_Q)) \ + OP(L'׆', RALT(LSHIFT(Key_B))) \ + OP(L'א', Key_T) /* U+05d0, XKB_KEY_hebrew_aleph, HEBREW LETTER ALEF */ \ + OP(L'ב', Key_C) /* U+05d1, XKB_KEY_hebrew_bet, HEBREW LETTER BET */ \ + OP(L'ג', Key_D) /* U+05d2, XKB_KEY_hebrew_gimel, HEBREW LETTER GIMEL */ \ + OP(L'ד', Key_S) /* U+05d3, XKB_KEY_hebrew_dalet, HEBREW LETTER DALET */ \ + OP(L'ה', Key_V) /* U+05d4, XKB_KEY_hebrew_he, HEBREW LETTER HE */ \ + OP(L'ו', Key_U) /* U+05d5, XKB_KEY_hebrew_waw, HEBREW LETTER VAV */ \ + OP(L'ז', Key_Z) /* U+05d6, XKB_KEY_hebrew_zain, HEBREW LETTER ZAYIN */ \ + OP(L'ח', Key_J) /* U+05d7, XKB_KEY_hebrew_chet, HEBREW LETTER HET */ \ + OP(L'ט', Key_Y) /* U+05d8, XKB_KEY_hebrew_tet, HEBREW LETTER TET */ \ + OP(L'י', Key_H) /* U+05d9, XKB_KEY_hebrew_yod, HEBREW LETTER YOD */ \ + OP(L'ך', Key_L) /* U+05da, XKB_KEY_hebrew_finalkaph, HEBREW LETTER FINAL KAF */ \ + OP(L'כ', Key_F) /* U+05db, XKB_KEY_hebrew_kaph, HEBREW LETTER KAF */ \ + OP(L'ל', Key_K) /* U+05dc, XKB_KEY_hebrew_lamed, HEBREW LETTER LAMED */ \ + OP(L'ם', Key_O) /* U+05dd, XKB_KEY_hebrew_finalmem, HEBREW LETTER FINAL MEM */ \ + OP(L'מ', Key_N) /* U+05de, XKB_KEY_hebrew_mem, HEBREW LETTER MEM */ \ + OP(L'ן', Key_I) /* U+05df, XKB_KEY_hebrew_finalnun, HEBREW LETTER FINAL NUN */ \ + OP(L'נ', Key_B) /* U+05e0, XKB_KEY_hebrew_nun, HEBREW LETTER NUN */ \ + OP(L'ס', Key_X) /* U+05e1, XKB_KEY_hebrew_samech, HEBREW LETTER SAMEKH */ \ + OP(L'ע', Key_G) /* U+05e2, XKB_KEY_hebrew_ayin, HEBREW LETTER AYIN */ \ + OP(L'ף', Key_Semicolon) /* U+05e3, XKB_KEY_hebrew_finalpe, HEBREW LETTER FINAL PE */ \ + OP(L'פ', Key_P) /* U+05e4, XKB_KEY_hebrew_pe, HEBREW LETTER PE */ \ + OP(L'ץ', Key_Period) /* U+05e5, XKB_KEY_hebrew_finalzade, HEBREW LETTER FINAL TSADI */ \ + OP(L'צ', Key_M) /* U+05e6, XKB_KEY_hebrew_zade, HEBREW LETTER TSADI */ \ + OP(L'ק', Key_E) /* U+05e7, XKB_KEY_hebrew_qoph, HEBREW LETTER QOF */ \ + OP(L'ר', Key_R) /* U+05e8, XKB_KEY_hebrew_resh, HEBREW LETTER RESH */ \ + OP(L'ש', Key_A) /* U+05e9, XKB_KEY_hebrew_shin, HEBREW LETTER SHIN */ \ + OP(L'ת', Key_Comma) /* U+05ea, XKB_KEY_hebrew_taw, HEBREW LETTER TAV */ \ + OP(L'װ', RALT(Key_Y)) \ + OP(L'ױ', RALT(Key_G)) \ + OP(L'ײ', RALT(Key_H)) \ + OP(L'׳', RALT(Key_Backtick)) \ + OP(L'״', RALT(Key_Quote)) \ + OP(L'‎', RALT(Key_9)) \ + OP(L'‏', RALT(Key_0)) \ + OP(L'–', RALT(Key_Equals)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'’', RALT(Key_Comma)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(Key_Period)) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'”', RALT(Key_L)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_Semicolon)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'₪', RALT(Key_4)) /* U+20aa, XKB_KEY_NewSheqelSign, NEW SHEQEL SIGN */ \ + OP(L'€', RALT(Key_3)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_3)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_NewSheqelSign, RALT(Key_4)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_W) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketleft, Key_RightBracket) \ + OP(XKB_KEY_bracketright, Key_LeftBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Quote) \ + OP(XKB_KEY_degree, RALT(Key_5)) \ + OP(XKB_KEY_division, RALT(Key_Slash)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_Semicolon)) \ + OP(XKB_KEY_endash, RALT(Key_Equals)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_hebrew_aleph, Key_T) \ + OP(XKB_KEY_hebrew_ayin, Key_G) \ + OP(XKB_KEY_hebrew_bet, Key_C) /* XKB_KEY_hebrew_beth, deprecated */ \ + OP(XKB_KEY_hebrew_chet, Key_J) /* XKB_KEY_hebrew_het, deprecated */ \ + OP(XKB_KEY_hebrew_dalet, Key_S) /* XKB_KEY_hebrew_daleth, deprecated */ \ + OP(XKB_KEY_hebrew_finalkaph, Key_L) \ + OP(XKB_KEY_hebrew_finalmem, Key_O) \ + OP(XKB_KEY_hebrew_finalnun, Key_I) \ + OP(XKB_KEY_hebrew_finalpe, Key_Semicolon) \ + OP(XKB_KEY_hebrew_finalzade, Key_Period) /* XKB_KEY_hebrew_finalzadi, deprecated */ \ + OP(XKB_KEY_hebrew_gimel, Key_D) /* XKB_KEY_hebrew_gimmel, deprecated */ \ + OP(XKB_KEY_hebrew_he, Key_V) \ + OP(XKB_KEY_hebrew_kaph, Key_F) \ + OP(XKB_KEY_hebrew_lamed, Key_K) \ + OP(XKB_KEY_hebrew_mem, Key_N) \ + OP(XKB_KEY_hebrew_nun, Key_B) \ + OP(XKB_KEY_hebrew_pe, Key_P) \ + OP(XKB_KEY_hebrew_qoph, Key_E) /* XKB_KEY_hebrew_kuf, deprecated */ \ + OP(XKB_KEY_hebrew_resh, Key_R) \ + OP(XKB_KEY_hebrew_samech, Key_X) /* XKB_KEY_hebrew_samekh, deprecated */ \ + OP(XKB_KEY_hebrew_shin, Key_A) \ + OP(XKB_KEY_hebrew_taw, Key_Comma) /* XKB_KEY_hebrew_taf, deprecated */ \ + OP(XKB_KEY_hebrew_tet, Key_Y) /* XKB_KEY_hebrew_teth, deprecated */ \ + OP(XKB_KEY_hebrew_waw, Key_U) \ + OP(XKB_KEY_hebrew_yod, Key_H) \ + OP(XKB_KEY_hebrew_zade, Key_M) /* XKB_KEY_hebrew_zadi, deprecated */ \ + OP(XKB_KEY_hebrew_zain, Key_Z) /* XKB_KEY_hebrew_zayin, deprecated */ \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(Key_8)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_L)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_Comma)) \ + OP(XKB_KEY_semicolon, Key_Backtick) \ + OP(XKB_KEY_singlelowquotemark, RALT(Key_Period)) \ + OP(XKB_KEY_slash, Key_Q) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace il { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace il +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/ben/keymap.h b/src/kaleidoscope/host_keymap/linux/in/ben/keymap.h new file mode 100644 index 0000000000..f32f0a3b4f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/ben/keymap.h @@ -0,0 +1,289 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: ben + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'।', LSHIFT(Key_Period)) \ + OP(L'ঁ', LSHIFT(Key_X)) \ + OP(L'ং', Key_X) \ + OP(L'ঃ', LSHIFT(Key_Minus)) \ + OP(L'অ', LSHIFT(Key_D)) \ + OP(L'আ', LSHIFT(Key_E)) \ + OP(L'ই', LSHIFT(Key_F)) \ + OP(L'ঈ', LSHIFT(Key_R)) \ + OP(L'উ', LSHIFT(Key_G)) \ + OP(L'ঊ', LSHIFT(Key_T)) \ + OP(L'ঋ', Key_Equals) \ + OP(L'এ', LSHIFT(Key_S)) \ + OP(L'ঐ', LSHIFT(Key_W)) \ + OP(L'ও', LSHIFT(Key_A)) \ + OP(L'ঔ', LSHIFT(Key_Q)) \ + OP(L'ক', Key_K) \ + OP(L'খ', LSHIFT(Key_K)) \ + OP(L'গ', Key_I) \ + OP(L'ঘ', LSHIFT(Key_I)) \ + OP(L'ঙ', LSHIFT(Key_U)) \ + OP(L'চ', Key_Semicolon) \ + OP(L'ছ', LSHIFT(Key_Semicolon)) \ + OP(L'জ', Key_P) \ + OP(L'ঝ', LSHIFT(Key_P)) \ + OP(L'ঞ', LSHIFT(Key_RightBracket)) \ + OP(L'ট', Key_Quote) \ + OP(L'ঠ', LSHIFT(Key_Quote)) \ + OP(L'ড', Key_LeftBracket) \ + OP(L'ঢ', LSHIFT(Key_LeftBracket)) \ + OP(L'ণ', LSHIFT(Key_C)) \ + OP(L'ত', Key_L) \ + OP(L'থ', LSHIFT(Key_L)) \ + OP(L'দ', Key_O) \ + OP(L'ধ', LSHIFT(Key_O)) \ + OP(L'ন', Key_V) \ + OP(L'প', Key_H) \ + OP(L'ফ', LSHIFT(Key_H)) \ + OP(L'ব', Key_Y) \ + OP(L'ভ', LSHIFT(Key_Y)) \ + OP(L'ম', Key_C) \ + OP(L'য', LSHIFT(Key_Slash)) \ + OP(L'র', Key_J) \ + OP(L'ল', Key_N) \ + OP(L'শ', LSHIFT(Key_M)) \ + OP(L'ষ', LSHIFT(Key_Comma)) \ + OP(L'স', Key_M) \ + OP(L'হ', Key_U) \ + OP(L'়', Key_RightBracket) \ + OP(L'া', Key_E) \ + OP(L'ি', Key_F) \ + OP(L'ী', Key_R) \ + OP(L'ু', Key_G) \ + OP(L'ূ', Key_T) \ + OP(L'ৃ', LSHIFT(Key_Equals)) \ + OP(L'ে', Key_S) \ + OP(L'ৈ', Key_W) \ + OP(L'ো', Key_A) \ + OP(L'ৌ', Key_Q) \ + OP(L'্', Key_D) \ + OP(L'ঢ়', LSHIFT(Key_J)) \ + OP(L'য়', Key_Slash) \ + OP(L'০', Key_0) \ + OP(L'১', Key_1) \ + OP(L'২', Key_2) \ + OP(L'৩', Key_3) \ + OP(L'৪', Key_4) \ + OP(L'৫', Key_5) \ + OP(L'৬', Key_6) \ + OP(L'৭', Key_7) \ + OP(L'৮', Key_8) \ + OP(L'৯', Key_9) \ + OP(L'₹', RALT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace ben { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ben +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/ben_baishakhi/keymap.h b/src/kaleidoscope/host_keymap/linux/in/ben_baishakhi/keymap.h new file mode 100644 index 0000000000..ee72e1beb9 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/ben_baishakhi/keymap.h @@ -0,0 +1,349 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: ben_baishakhi + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'।', LSHIFT(Key_L)) \ + OP(L'ঁ', RALT(Key_M)) \ + OP(L'ং', RALT(Key_Slash)) \ + OP(L'ঃ', RALT(Key_H)) \ + OP(L'অ', LSHIFT(Key_A)) \ + OP(L'আ', RALT(Key_A)) \ + OP(L'ই', LSHIFT(Key_I)) \ + OP(L'ঈ', RALT(Key_I)) \ + OP(L'উ', LSHIFT(Key_U)) \ + OP(L'ঊ', RALT(Key_U)) \ + OP(L'ঋ', RALT(Key_R)) \ + OP(L'ঌ', RALT(Key_L)) \ + OP(L'এ', LSHIFT(Key_E)) \ + OP(L'ঐ', RALT(Key_E)) \ + OP(L'ও', LSHIFT(Key_O)) \ + OP(L'ঔ', RALT(Key_O)) \ + OP(L'ক', Key_K) \ + OP(L'খ', LSHIFT(Key_K)) \ + OP(L'গ', Key_G) \ + OP(L'ঘ', LSHIFT(Key_G)) \ + OP(L'ঙ', LSHIFT(Key_M)) \ + OP(L'চ', Key_C) \ + OP(L'ছ', LSHIFT(Key_C)) \ + OP(L'জ', Key_J) \ + OP(L'ঝ', LSHIFT(Key_J)) \ + OP(L'ঞ', RALT(Key_N)) \ + OP(L'ট', Key_T) \ + OP(L'ঠ', LSHIFT(Key_T)) \ + OP(L'ড', Key_Q) \ + OP(L'ঢ', LSHIFT(Key_Q)) \ + OP(L'ণ', LSHIFT(Key_N)) \ + OP(L'ত', Key_F) \ + OP(L'থ', LSHIFT(Key_F)) \ + OP(L'দ', Key_D) \ + OP(L'ধ', LSHIFT(Key_D)) \ + OP(L'ন', Key_N) \ + OP(L'প', Key_P) \ + OP(L'ফ', LSHIFT(Key_P)) \ + OP(L'ব', Key_B) \ + OP(L'ভ', LSHIFT(Key_B)) \ + OP(L'ম', Key_M) \ + OP(L'য', Key_Y) \ + OP(L'র', Key_R) \ + OP(L'ল', Key_L) \ + OP(L'শ', LSHIFT(Key_S)) \ + OP(L'ষ', RALT(Key_S)) \ + OP(L'স', Key_S) \ + OP(L'হ', LSHIFT(Key_H)) \ + OP(L'়', RALT(Key_Period)) \ + OP(L'া', Key_A) \ + OP(L'ি', Key_I) \ + OP(L'ী', Key_W) \ + OP(L'ু', Key_U) \ + OP(L'ূ', LSHIFT(Key_W)) \ + OP(L'ৃ', LSHIFT(Key_R)) \ + OP(L'ে', Key_E) \ + OP(L'ৈ', Key_Z) \ + OP(L'ো', Key_O) \ + OP(L'ৌ', LSHIFT(Key_Z)) \ + OP(L'্', Key_H) \ + OP(L'ৎ', RALT(Key_F)) \ + OP(L'ৗ', RALT(Key_6)) \ + OP(L'ড়', Key_X) \ + OP(L'ঢ়', LSHIFT(Key_X)) \ + OP(L'য়', LSHIFT(Key_Y)) \ + OP(L'০', Key_0) \ + OP(L'১', Key_1) \ + OP(L'২', Key_2) \ + OP(L'৩', Key_3) \ + OP(L'৪', Key_4) \ + OP(L'৫', Key_5) \ + OP(L'৬', Key_6) \ + OP(L'৭', Key_7) \ + OP(L'৮', Key_8) \ + OP(L'৯', Key_9) \ + OP(L'ৰ', LSHIFT(Key_V)) \ + OP(L'ৱ', Key_V) \ + OP(L'৲', RALT(Key_4)) \ + OP(L'৺', RALT(Key_8)) \ + OP(L'‌', LSHIFT(Key_Backtick)) \ + OP(L'‍', Key_Backtick) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace ben_baishakhi { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ben_baishakhi +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/ben_bornona/keymap.h b/src/kaleidoscope/host_keymap/linux/in/ben_bornona/keymap.h new file mode 100644 index 0000000000..a3f76de216 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/ben_bornona/keymap.h @@ -0,0 +1,327 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: ben_bornona + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) \ + OP('/', Key_Slash) \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(':', LSHIFT(Key_Semicolon)) \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('[', Key_LeftBracket) \ + OP(']', Key_RightBracket) \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', LSHIFT(Key_LeftBracket)) \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) \ + OP(L'/', Key_Slash) \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L':', LSHIFT(Key_Semicolon)) \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'[', Key_LeftBracket) \ + OP(L']', Key_RightBracket) \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'।', LSHIFT(Key_L)) \ + OP(L'ঁ', LSHIFT(Key_2)) \ + OP(L'ং', Key_Q) \ + OP(L'ঃ', LSHIFT(Key_6)) \ + OP(L'অ', LSHIFT(Key_A)) \ + OP(L'ই', RALT(Key_I)) \ + OP(L'ঈ', RALT(Key_E)) \ + OP(L'উ', RALT(Key_U)) \ + OP(L'ঊ', RALT(Key_W)) \ + OP(L'ঋ', RALT(Key_R)) \ + OP(L'এ', RALT(Key_Y)) \ + OP(L'ঐ', LSHIFT(Key_P)) \ + OP(L'ও', RALT(Key_O)) \ + OP(L'ঔ', RALT(Key_P)) \ + OP(L'ক', Key_K) \ + OP(L'খ', LSHIFT(Key_K)) \ + OP(L'গ', Key_G) \ + OP(L'ঘ', LSHIFT(Key_G)) \ + OP(L'ঙ', LSHIFT(Key_Q)) \ + OP(L'চ', Key_C) \ + OP(L'ছ', LSHIFT(Key_C)) \ + OP(L'জ', Key_J) \ + OP(L'ঝ', LSHIFT(Key_J)) \ + OP(L'ঞ', LSHIFT(Key_M)) \ + OP(L'ট', LSHIFT(Key_T)) \ + OP(L'ঠ', LSHIFT(Key_W)) \ + OP(L'ড', LSHIFT(Key_D)) \ + OP(L'ঢ', Key_W) \ + OP(L'ণ', LSHIFT(Key_N)) \ + OP(L'ত', Key_T) \ + OP(L'থ', LSHIFT(Key_Y)) \ + OP(L'দ', Key_D) \ + OP(L'ধ', Key_Y) \ + OP(L'ন', Key_N) \ + OP(L'প', Key_P) \ + OP(L'ফ', Key_F) \ + OP(L'ব', Key_B) \ + OP(L'ভ', Key_V) \ + OP(L'ম', Key_M) \ + OP(L'য', Key_Z) \ + OP(L'র', Key_R) \ + OP(L'ল', Key_L) \ + OP(L'শ', LSHIFT(Key_S)) \ + OP(L'ষ', Key_X) \ + OP(L'স', Key_S) \ + OP(L'হ', LSHIFT(Key_H)) \ + OP(L'া', Key_A) \ + OP(L'ি', Key_I) \ + OP(L'ী', LSHIFT(Key_I)) \ + OP(L'ু', Key_U) \ + OP(L'ূ', LSHIFT(Key_U)) \ + OP(L'ৃ', LSHIFT(Key_R)) \ + OP(L'ে', Key_E) \ + OP(L'ৈ', LSHIFT(Key_E)) \ + OP(L'ো', Key_O) \ + OP(L'ৌ', LSHIFT(Key_O)) \ + OP(L'্', Key_H) \ + OP(L'ৎ', LSHIFT(Key_7)) \ + OP(L'ৗ', RALT(Key_Q)) \ + OP(L'ড়', RALT(Key_LeftBracket)) \ + OP(L'ঢ়', LSHIFT(Key_X)) \ + OP(L'য়', LSHIFT(Key_B)) \ + OP(L'০', Key_0) \ + OP(L'১', Key_1) \ + OP(L'২', Key_2) \ + OP(L'৩', Key_3) \ + OP(L'৪', Key_4) \ + OP(L'৫', Key_5) \ + OP(L'৬', Key_6) \ + OP(L'৭', Key_7) \ + OP(L'৮', Key_8) \ + OP(L'৯', Key_9) \ + OP(L'ৰ', LSHIFT(Key_NonUsPound)) \ + OP(L'ৱ', Key_NonUsPound) \ + OP(L'৳', LSHIFT(Key_4)) \ + OP(L'৴', RALT(Key_A)) \ + OP(L'৵', RALT(Key_S)) \ + OP(L'৸', RALT(Key_D)) \ + OP(L'৺', RALT(Key_X)) \ + OP(L'‌', LSHIFT(Key_Backtick)) \ + OP(L'‍', Key_Backtick) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace ben_bornona { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ben_bornona +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/ben_gitanjali/keymap.h b/src/kaleidoscope/host_keymap/linux/in/ben_gitanjali/keymap.h new file mode 100644 index 0000000000..42f56974a2 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/ben_gitanjali/keymap.h @@ -0,0 +1,303 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: ben_gitanjali + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_2)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_6)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(':', Key_Backtick) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Backtick)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_2)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_6)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L':', Key_Backtick) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Backtick)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'।', Key_Period) \ + OP(L'ঁ', LSHIFT(Key_X)) \ + OP(L'ং', Key_X) \ + OP(L'ঃ', LSHIFT(Key_Minus)) \ + OP(L'অ', LSHIFT(Key_E)) \ + OP(L'ই', LSHIFT(Key_F)) \ + OP(L'ঈ', LSHIFT(Key_R)) \ + OP(L'উ', LSHIFT(Key_G)) \ + OP(L'ঊ', LSHIFT(Key_T)) \ + OP(L'ঋ', LSHIFT(Key_Equals)) \ + OP(L'এ', LSHIFT(Key_S)) \ + OP(L'ঐ', LSHIFT(Key_W)) \ + OP(L'ও', LSHIFT(Key_A)) \ + OP(L'ঔ', LSHIFT(Key_Q)) \ + OP(L'ক', Key_K) \ + OP(L'খ', LSHIFT(Key_K)) \ + OP(L'গ', Key_I) \ + OP(L'ঘ', LSHIFT(Key_I)) \ + OP(L'ঙ', LSHIFT(Key_U)) \ + OP(L'চ', Key_Semicolon) \ + OP(L'ছ', LSHIFT(Key_Semicolon)) \ + OP(L'জ', Key_P) \ + OP(L'ঝ', LSHIFT(Key_P)) \ + OP(L'ঞ', LSHIFT(Key_RightBracket)) \ + OP(L'ট', Key_Quote) \ + OP(L'ঠ', LSHIFT(Key_Quote)) \ + OP(L'ড', Key_LeftBracket) \ + OP(L'ঢ', LSHIFT(Key_LeftBracket)) \ + OP(L'ণ', LSHIFT(Key_C)) \ + OP(L'ত', Key_L) \ + OP(L'থ', LSHIFT(Key_L)) \ + OP(L'দ', Key_O) \ + OP(L'ধ', LSHIFT(Key_O)) \ + OP(L'ন', Key_V) \ + OP(L'প', Key_H) \ + OP(L'ফ', LSHIFT(Key_H)) \ + OP(L'ব', Key_Y) \ + OP(L'ভ', LSHIFT(Key_Y)) \ + OP(L'ম', Key_C) \ + OP(L'য', Key_Slash) \ + OP(L'র', Key_J) \ + OP(L'ল', Key_N) \ + OP(L'শ', LSHIFT(Key_M)) \ + OP(L'ষ', LSHIFT(Key_Comma)) \ + OP(L'স', Key_M) \ + OP(L'হ', Key_U) \ + OP(L'া', Key_E) \ + OP(L'ি', Key_F) \ + OP(L'ী', Key_R) \ + OP(L'ু', Key_G) \ + OP(L'ূ', Key_T) \ + OP(L'ৃ', Key_Equals) \ + OP(L'ে', Key_S) \ + OP(L'ৈ', Key_W) \ + OP(L'্', Key_D) \ + OP(L'ৎ', LSHIFT(Key_1)) \ + OP(L'ৗ', Key_Q) \ + OP(L'ড়', LSHIFT(Key_V)) \ + OP(L'ঢ়', LSHIFT(Key_B)) \ + OP(L'য়', LSHIFT(Key_Slash)) \ + OP(L'০', Key_0) \ + OP(L'১', Key_1) \ + OP(L'২', Key_2) \ + OP(L'৩', Key_3) \ + OP(L'৪', Key_4) \ + OP(L'৫', Key_5) \ + OP(L'৬', Key_6) \ + OP(L'৭', Key_7) \ + OP(L'৮', Key_8) \ + OP(L'৯', Key_9) \ + OP(L'ৰ', LSHIFT(Key_J)) \ + OP(L'ৱ', Key_B) \ + OP(L'৳', LSHIFT(Key_4)) \ + OP(L'৺', LSHIFT(Key_Period)) \ + OP(L'‌', Key_RightBracket) \ + OP(L'‍', Key_A) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_2)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_colon, Key_Backtick) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_period, LSHIFT(Key_6)) \ + OP(XKB_KEY_question, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_slash, LSHIFT(Key_5)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace ben_gitanjali { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ben_gitanjali +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/ben_inscript/keymap.h b/src/kaleidoscope/host_keymap/linux/in/ben_inscript/keymap.h new file mode 100644 index 0000000000..fd41f65050 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/ben_inscript/keymap.h @@ -0,0 +1,284 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: ben_inscript + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'।', LSHIFT(Key_Period)) \ + OP(L'ঁ', LSHIFT(Key_X)) \ + OP(L'ং', Key_X) \ + OP(L'ঃ', LSHIFT(Key_Minus)) \ + OP(L'অ', LSHIFT(Key_D)) \ + OP(L'আ', LSHIFT(Key_E)) \ + OP(L'ই', LSHIFT(Key_F)) \ + OP(L'ঈ', LSHIFT(Key_R)) \ + OP(L'উ', LSHIFT(Key_G)) \ + OP(L'ঊ', LSHIFT(Key_T)) \ + OP(L'ঋ', LSHIFT(Key_Equals)) \ + OP(L'এ', LSHIFT(Key_S)) \ + OP(L'ঐ', LSHIFT(Key_W)) \ + OP(L'ও', LSHIFT(Key_A)) \ + OP(L'ঔ', LSHIFT(Key_Q)) \ + OP(L'ক', Key_K) \ + OP(L'খ', LSHIFT(Key_K)) \ + OP(L'গ', Key_I) \ + OP(L'ঘ', LSHIFT(Key_I)) \ + OP(L'ঙ', LSHIFT(Key_U)) \ + OP(L'চ', Key_Semicolon) \ + OP(L'ছ', LSHIFT(Key_Semicolon)) \ + OP(L'জ', Key_P) \ + OP(L'ঝ', LSHIFT(Key_P)) \ + OP(L'ঞ', LSHIFT(Key_RightBracket)) \ + OP(L'ট', Key_Quote) \ + OP(L'ঠ', LSHIFT(Key_Quote)) \ + OP(L'ড', Key_LeftBracket) \ + OP(L'ঢ', LSHIFT(Key_LeftBracket)) \ + OP(L'ণ', LSHIFT(Key_C)) \ + OP(L'ত', Key_L) \ + OP(L'থ', LSHIFT(Key_L)) \ + OP(L'দ', Key_O) \ + OP(L'ধ', LSHIFT(Key_O)) \ + OP(L'ন', Key_V) \ + OP(L'প', Key_H) \ + OP(L'ফ', LSHIFT(Key_H)) \ + OP(L'ব', Key_Y) \ + OP(L'ভ', LSHIFT(Key_Y)) \ + OP(L'ম', Key_C) \ + OP(L'য', LSHIFT(Key_Slash)) \ + OP(L'র', Key_J) \ + OP(L'ল', Key_N) \ + OP(L'শ', LSHIFT(Key_M)) \ + OP(L'ষ', LSHIFT(Key_Comma)) \ + OP(L'স', Key_M) \ + OP(L'হ', Key_U) \ + OP(L'়', Key_RightBracket) \ + OP(L'া', Key_E) \ + OP(L'ি', Key_F) \ + OP(L'ী', Key_R) \ + OP(L'ু', Key_G) \ + OP(L'ূ', Key_T) \ + OP(L'ৃ', Key_Equals) \ + OP(L'ে', Key_S) \ + OP(L'ৈ', Key_W) \ + OP(L'ো', Key_A) \ + OP(L'ৌ', Key_Q) \ + OP(L'্', Key_D) \ + OP(L'ৎ', Key_Z) \ + OP(L'ঢ়', LSHIFT(Key_J)) \ + OP(L'য়', Key_Slash) \ + OP(L'০', Key_0) \ + OP(L'১', Key_1) \ + OP(L'২', Key_2) \ + OP(L'৩', Key_3) \ + OP(L'৪', Key_4) \ + OP(L'৫', Key_5) \ + OP(L'৬', Key_6) \ + OP(L'৭', Key_7) \ + OP(L'৮', Key_8) \ + OP(L'৯', Key_9) \ + OP(L'‌', LSHIFT(Key_Backtick)) \ + OP(L'‍', Key_Backtick) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace ben_inscript { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ben_inscript +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/ben_probhat/keymap.h b/src/kaleidoscope/host_keymap/linux/in/ben_probhat/keymap.h new file mode 100644 index 0000000000..6e26b638a7 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/ben_probhat/keymap.h @@ -0,0 +1,324 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: ben_probhat + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'।', Key_Period) \ + OP(L'॥', LSHIFT(Key_NonUsPound)) \ + OP(L'ঁ', LSHIFT(Key_Period)) \ + OP(L'ং', LSHIFT(Key_L)) \ + OP(L'ঃ', LSHIFT(Key_H)) \ + OP(L'অ', LSHIFT(Key_A)) \ + OP(L'আ', Key_V) \ + OP(L'ই', LSHIFT(Key_I)) \ + OP(L'ঈ', LSHIFT(Key_E)) \ + OP(L'উ', LSHIFT(Key_U)) \ + OP(L'ঊ', LSHIFT(Key_W)) \ + OP(L'ঋ', LSHIFT(Key_V)) \ + OP(L'এ', Key_Y) \ + OP(L'ঐ', LSHIFT(Key_Y)) \ + OP(L'ও', Key_O) \ + OP(L'ঔ', LSHIFT(Key_O)) \ + OP(L'ক', Key_K) \ + OP(L'খ', LSHIFT(Key_K)) \ + OP(L'গ', Key_G) \ + OP(L'ঘ', LSHIFT(Key_G)) \ + OP(L'ঙ', LSHIFT(Key_M)) \ + OP(L'চ', Key_C) \ + OP(L'ছ', LSHIFT(Key_C)) \ + OP(L'জ', Key_J) \ + OP(L'ঝ', LSHIFT(Key_J)) \ + OP(L'ঞ', LSHIFT(Key_7)) \ + OP(L'ট', Key_T) \ + OP(L'ঠ', LSHIFT(Key_T)) \ + OP(L'ড', Key_D) \ + OP(L'ঢ', LSHIFT(Key_D)) \ + OP(L'ণ', LSHIFT(Key_N)) \ + OP(L'ত', Key_F) \ + OP(L'থ', LSHIFT(Key_F)) \ + OP(L'দ', Key_Q) \ + OP(L'ধ', LSHIFT(Key_Q)) \ + OP(L'ন', Key_N) \ + OP(L'প', Key_P) \ + OP(L'ফ', LSHIFT(Key_P)) \ + OP(L'ব', Key_B) \ + OP(L'ভ', LSHIFT(Key_B)) \ + OP(L'ম', Key_M) \ + OP(L'য', LSHIFT(Key_Z)) \ + OP(L'র', Key_R) \ + OP(L'ল', Key_L) \ + OP(L'শ', Key_X) \ + OP(L'ষ', LSHIFT(Key_S)) \ + OP(L'স', Key_S) \ + OP(L'হ', Key_H) \ + OP(L'া', Key_A) \ + OP(L'ি', Key_I) \ + OP(L'ী', Key_E) \ + OP(L'ু', Key_U) \ + OP(L'ূ', Key_W) \ + OP(L'ৃ', LSHIFT(Key_Comma)) \ + OP(L'ে', Key_LeftBracket) \ + OP(L'ৈ', LSHIFT(Key_LeftBracket)) \ + OP(L'ো', Key_RightBracket) \ + OP(L'ৌ', LSHIFT(Key_RightBracket)) \ + OP(L'্', Key_Slash) \ + OP(L'ৎ', LSHIFT(Key_8)) \ + OP(L'ড়', LSHIFT(Key_R)) \ + OP(L'ঢ়', LSHIFT(Key_X)) \ + OP(L'য়', Key_Z) \ + OP(L'০', Key_0) \ + OP(L'১', Key_1) \ + OP(L'২', Key_2) \ + OP(L'৩', Key_3) \ + OP(L'৪', Key_4) \ + OP(L'৫', Key_5) \ + OP(L'৬', Key_6) \ + OP(L'৭', Key_7) \ + OP(L'৮', Key_8) \ + OP(L'৯', Key_9) \ + OP(L'৳', LSHIFT(Key_4)) \ + OP(L'‌', Key_NonUsPound) \ + OP(L'‍', Key_Backtick) \ + OP(L'₹', RALT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace ben_probhat { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ben_probhat +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/bolnagri/keymap.h b/src/kaleidoscope/host_keymap/linux/in/bolnagri/keymap.h new file mode 100644 index 0000000000..83c4e30f9a --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/bolnagri/keymap.h @@ -0,0 +1,365 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: bolnagri + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(LSHIFT(Key_NonUsPound))) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(LSHIFT(Key_NonUsPound))) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ँ', LSHIFT(Key_Backtick)) \ + OP(L'ं', Key_Backtick) \ + OP(L'ः', LSHIFT(Key_H)) \ + OP(L'अ', RALT(Key_A)) \ + OP(L'आ', LSHIFT(Key_A)) \ + OP(L'इ', RALT(Key_I)) \ + OP(L'ई', RALT(LSHIFT(Key_I))) \ + OP(L'उ', RALT(Key_U)) \ + OP(L'ऊ', RALT(LSHIFT(Key_U))) \ + OP(L'ऋ', RALT(LSHIFT(Key_R))) \ + OP(L'ऌ', RALT(LSHIFT(Key_L))) \ + OP(L'ऍ', RALT(LSHIFT(Key_Z))) \ + OP(L'ए', RALT(Key_E)) \ + OP(L'ऐ', RALT(LSHIFT(Key_E))) \ + OP(L'ऑ', RALT(LSHIFT(Key_X))) \ + OP(L'ओ', RALT(Key_O)) \ + OP(L'औ', RALT(LSHIFT(Key_O))) \ + OP(L'क', Key_K) \ + OP(L'ख', LSHIFT(Key_K)) \ + OP(L'ग', Key_G) \ + OP(L'घ', LSHIFT(Key_G)) \ + OP(L'ङ', LSHIFT(Key_M)) \ + OP(L'च', Key_C) \ + OP(L'छ', LSHIFT(Key_C)) \ + OP(L'ज', Key_J) \ + OP(L'झ', LSHIFT(Key_J)) \ + OP(L'ञ', LSHIFT(Key_Y)) \ + OP(L'ट', Key_F) \ + OP(L'ठ', LSHIFT(Key_F)) \ + OP(L'ड', Key_V) \ + OP(L'ढ', LSHIFT(Key_V)) \ + OP(L'ण', LSHIFT(Key_N)) \ + OP(L'त', Key_T) \ + OP(L'थ', LSHIFT(Key_T)) \ + OP(L'द', Key_D) \ + OP(L'ध', LSHIFT(Key_D)) \ + OP(L'न', Key_N) \ + OP(L'प', Key_P) \ + OP(L'फ', LSHIFT(Key_P)) \ + OP(L'ब', Key_B) \ + OP(L'भ', LSHIFT(Key_B)) \ + OP(L'म', Key_M) \ + OP(L'य', Key_Y) \ + OP(L'र', Key_R) \ + OP(L'ऱ', RALT(Key_R)) \ + OP(L'ल', Key_L) \ + OP(L'ळ', LSHIFT(Key_L)) \ + OP(L'व', Key_W) \ + OP(L'श', Key_Z) \ + OP(L'ष', LSHIFT(Key_S)) \ + OP(L'स', Key_S) \ + OP(L'ह', Key_H) \ + OP(L'़', LSHIFT(Key_Period)) \ + OP(L'ऽ', RALT(LSHIFT(Key_M))) \ + OP(L'ा', Key_A) \ + OP(L'ि', Key_I) \ + OP(L'ी', LSHIFT(Key_I)) \ + OP(L'ु', Key_U) \ + OP(L'ू', LSHIFT(Key_U)) \ + OP(L'ृ', LSHIFT(Key_R)) \ + OP(L'ॅ', LSHIFT(Key_Z)) \ + OP(L'े', Key_E) \ + OP(L'ै', LSHIFT(Key_E)) \ + OP(L'ॉ', LSHIFT(Key_X)) \ + OP(L'ो', Key_O) \ + OP(L'ौ', LSHIFT(Key_O)) \ + OP(L'्', Key_X) \ + OP(L'ॐ', LSHIFT(Key_W)) \ + OP(L'ॢ', RALT(Key_L)) \ + OP(L'।', Key_NonUsPound) \ + OP(L'॥', LSHIFT(Key_NonUsPound)) \ + OP(L'०', RALT(Key_0)) \ + OP(L'१', RALT(Key_1)) \ + OP(L'२', RALT(Key_2)) \ + OP(L'३', RALT(Key_3)) \ + OP(L'५', RALT(Key_5)) \ + OP(L'६', RALT(Key_6)) \ + OP(L'७', RALT(Key_7)) \ + OP(L'८', RALT(Key_8)) \ + OP(L'९', RALT(Key_9)) \ + OP(L'॰', LSHIFT(Key_Comma)) \ + OP(L'‌', Key_Q) \ + OP(L'‍', LSHIFT(Key_Q)) \ + OP(L'₹', RALT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_bar, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace bolnagri { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace bolnagri +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/eeyek/keymap.h b/src/kaleidoscope/host_keymap/linux/in/eeyek/keymap.h new file mode 100644 index 0000000000..0379df9471 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/eeyek/keymap.h @@ -0,0 +1,330 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: eeyek + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ꯀ', Key_K) \ + OP(L'ꯁ', Key_S) \ + OP(L'ꯂ', Key_L) \ + OP(L'ꯃ', Key_M) \ + OP(L'ꯄ', Key_P) \ + OP(L'ꯅ', Key_N) \ + OP(L'ꯆ', Key_C) \ + OP(L'ꯇ', Key_T) \ + OP(L'ꯈ', Key_Q) \ + OP(L'ꯉ', Key_Z) \ + OP(L'ꯊ', Key_X) \ + OP(L'ꯋ', Key_W) \ + OP(L'ꯌ', Key_Y) \ + OP(L'ꯍ', Key_H) \ + OP(L'ꯎ', Key_U) \ + OP(L'ꯏ', Key_E) \ + OP(L'ꯐ', Key_F) \ + OP(L'ꯑ', Key_A) \ + OP(L'ꯒ', Key_G) \ + OP(L'ꯓ', LSHIFT(Key_S)) \ + OP(L'ꯔ', Key_R) \ + OP(L'ꯕ', Key_B) \ + OP(L'ꯖ', Key_J) \ + OP(L'ꯗ', Key_D) \ + OP(L'ꯘ', LSHIFT(Key_Q)) \ + OP(L'ꯙ', LSHIFT(Key_D)) \ + OP(L'ꯚ', Key_V) \ + OP(L'ꯛ', LSHIFT(Key_K)) \ + OP(L'ꯜ', LSHIFT(Key_L)) \ + OP(L'ꯝ', LSHIFT(Key_M)) \ + OP(L'ꯞ', LSHIFT(Key_P)) \ + OP(L'ꯟ', LSHIFT(Key_N)) \ + OP(L'ꯠ', LSHIFT(Key_T)) \ + OP(L'ꯡ', LSHIFT(Key_Z)) \ + OP(L'ꯢ', LSHIFT(Key_E)) \ + OP(L'ꯣ', Key_O) \ + OP(L'ꯤ', Key_I) \ + OP(L'ꯥ', LSHIFT(Key_A)) \ + OP(L'ꯦ', LSHIFT(Key_Y)) \ + OP(L'ꯧ', LSHIFT(Key_O)) \ + OP(L'ꯨ', LSHIFT(Key_U)) \ + OP(L'ꯩ', LSHIFT(Key_I)) \ + OP(L'ꯪ', LSHIFT(Key_H)) \ + OP(L'꯫', LSHIFT(Key_C)) \ + OP(L'꯬', LSHIFT(Key_B)) \ + OP(L'꯭', LSHIFT(Key_V)) \ + OP(L'꯰', Key_0) \ + OP(L'꯱', Key_1) \ + OP(L'꯲', Key_2) \ + OP(L'꯳', Key_3) \ + OP(L'꯴', Key_4) \ + OP(L'꯵', Key_5) \ + OP(L'꯶', Key_6) \ + OP(L'꯷', Key_7) \ + OP(L'꯸', Key_8) \ + OP(L'꯹', Key_9) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace eeyek { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace eeyek +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/eng/keymap.h b/src/kaleidoscope/host_keymap/linux/in/eng/keymap.h new file mode 100644 index 0000000000..e8168d1e41 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/eng/keymap.h @@ -0,0 +1,441 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: eng + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'₹', RALT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace eng { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace eng +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/guj/keymap.h b/src/kaleidoscope/host_keymap/linux/in/guj/keymap.h new file mode 100644 index 0000000000..05837397fc --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/guj/keymap.h @@ -0,0 +1,293 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: guj + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'।', LSHIFT(Key_Period)) \ + OP(L'ઁ', LSHIFT(Key_X)) \ + OP(L'ં', Key_X) \ + OP(L'ઃ', LSHIFT(Key_Minus)) \ + OP(L'અ', LSHIFT(Key_D)) \ + OP(L'આ', LSHIFT(Key_E)) \ + OP(L'ઇ', LSHIFT(Key_F)) \ + OP(L'ઈ', LSHIFT(Key_R)) \ + OP(L'ઉ', LSHIFT(Key_G)) \ + OP(L'ઊ', LSHIFT(Key_T)) \ + OP(L'ઋ', Key_Equals) \ + OP(L'ઍ', LSHIFT(Key_1)) \ + OP(L'એ', LSHIFT(Key_S)) \ + OP(L'ઐ', LSHIFT(Key_W)) \ + OP(L'ઑ', LSHIFT(Key_NonUsPound)) \ + OP(L'ઓ', LSHIFT(Key_A)) \ + OP(L'ઔ', LSHIFT(Key_Q)) \ + OP(L'ક', Key_K) \ + OP(L'ખ', LSHIFT(Key_K)) \ + OP(L'ગ', Key_I) \ + OP(L'ઘ', LSHIFT(Key_I)) \ + OP(L'ઙ', LSHIFT(Key_U)) \ + OP(L'ચ', Key_Semicolon) \ + OP(L'છ', LSHIFT(Key_Semicolon)) \ + OP(L'જ', Key_P) \ + OP(L'ઝ', LSHIFT(Key_P)) \ + OP(L'ઞ', LSHIFT(Key_RightBracket)) \ + OP(L'ટ', Key_Quote) \ + OP(L'ઠ', LSHIFT(Key_Quote)) \ + OP(L'ડ', Key_LeftBracket) \ + OP(L'ઢ', LSHIFT(Key_LeftBracket)) \ + OP(L'ણ', LSHIFT(Key_C)) \ + OP(L'ત', Key_L) \ + OP(L'થ', LSHIFT(Key_L)) \ + OP(L'દ', Key_O) \ + OP(L'ધ', LSHIFT(Key_O)) \ + OP(L'ન', Key_V) \ + OP(L'પ', Key_H) \ + OP(L'ફ', LSHIFT(Key_H)) \ + OP(L'બ', Key_Y) \ + OP(L'ભ', LSHIFT(Key_Y)) \ + OP(L'મ', Key_C) \ + OP(L'ય', Key_Slash) \ + OP(L'ર', Key_J) \ + OP(L'લ', Key_N) \ + OP(L'ળ', LSHIFT(Key_N)) \ + OP(L'વ', Key_B) \ + OP(L'શ', LSHIFT(Key_M)) \ + OP(L'ષ', LSHIFT(Key_Comma)) \ + OP(L'સ', Key_M) \ + OP(L'હ', Key_U) \ + OP(L'઼', Key_RightBracket) \ + OP(L'ા', Key_E) \ + OP(L'િ', Key_F) \ + OP(L'ી', Key_R) \ + OP(L'ુ', Key_G) \ + OP(L'ૂ', Key_T) \ + OP(L'ૃ', LSHIFT(Key_Equals)) \ + OP(L'ૅ', LSHIFT(Key_2)) \ + OP(L'ે', Key_S) \ + OP(L'ૈ', Key_W) \ + OP(L'ૉ', Key_NonUsPound) \ + OP(L'ો', Key_A) \ + OP(L'ૌ', Key_Q) \ + OP(L'્', Key_D) \ + OP(L'૦', Key_0) \ + OP(L'૧', Key_1) \ + OP(L'૨', Key_2) \ + OP(L'૩', Key_3) \ + OP(L'૪', Key_4) \ + OP(L'૫', Key_5) \ + OP(L'૬', Key_6) \ + OP(L'૭', Key_7) \ + OP(L'૮', Key_8) \ + OP(L'૯', Key_9) \ + OP(L'₹', RALT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace guj { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace guj +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/guru/keymap.h b/src/kaleidoscope/host_keymap/linux/in/guru/keymap.h new file mode 100644 index 0000000000..132b9f57a7 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/guru/keymap.h @@ -0,0 +1,294 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: guru + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'।', LSHIFT(Key_Period)) \ + OP(L'ਁ', LSHIFT(Key_Z)) \ + OP(L'ਂ', Key_X) \ + OP(L'ਃ', Key_Minus) \ + OP(L'ਅ', LSHIFT(Key_D)) \ + OP(L'ਆ', LSHIFT(Key_E)) \ + OP(L'ਇ', LSHIFT(Key_F)) \ + OP(L'ਈ', LSHIFT(Key_R)) \ + OP(L'ਉ', LSHIFT(Key_G)) \ + OP(L'ਊ', LSHIFT(Key_T)) \ + OP(L'ਏ', LSHIFT(Key_S)) \ + OP(L'ਐ', LSHIFT(Key_W)) \ + OP(L'ਓ', LSHIFT(Key_A)) \ + OP(L'ਔ', LSHIFT(Key_Q)) \ + OP(L'ਕ', Key_K) \ + OP(L'ਖ', LSHIFT(Key_K)) \ + OP(L'ਗ', Key_I) \ + OP(L'ਘ', LSHIFT(Key_I)) \ + OP(L'ਙ', LSHIFT(Key_U)) \ + OP(L'ਚ', Key_Semicolon) \ + OP(L'ਛ', LSHIFT(Key_Semicolon)) \ + OP(L'ਜ', Key_P) \ + OP(L'ਝ', LSHIFT(Key_P)) \ + OP(L'ਞ', LSHIFT(Key_RightBracket)) \ + OP(L'ਟ', Key_Quote) \ + OP(L'ਠ', LSHIFT(Key_Quote)) \ + OP(L'ਡ', Key_LeftBracket) \ + OP(L'ਢ', LSHIFT(Key_LeftBracket)) \ + OP(L'ਣ', LSHIFT(Key_C)) \ + OP(L'ਤ', Key_L) \ + OP(L'ਥ', LSHIFT(Key_L)) \ + OP(L'ਦ', Key_O) \ + OP(L'ਧ', LSHIFT(Key_O)) \ + OP(L'ਨ', Key_V) \ + OP(L'ਪ', Key_H) \ + OP(L'ਫ', LSHIFT(Key_H)) \ + OP(L'ਬ', Key_Y) \ + OP(L'ਭ', LSHIFT(Key_Y)) \ + OP(L'ਮ', Key_C) \ + OP(L'ਯ', Key_Slash) \ + OP(L'ਰ', Key_J) \ + OP(L'ਲ', Key_N) \ + OP(L'ਲ਼', LSHIFT(Key_N)) \ + OP(L'ਵ', Key_B) \ + OP(L'ਸ਼', LSHIFT(Key_M)) \ + OP(L'ਸ', Key_M) \ + OP(L'ਹ', Key_U) \ + OP(L'਼', Key_RightBracket) \ + OP(L'ਾ', Key_E) \ + OP(L'ਿ', Key_F) \ + OP(L'ੀ', Key_R) \ + OP(L'ੁ', Key_G) \ + OP(L'ੂ', Key_T) \ + OP(L'ੇ', Key_S) \ + OP(L'ੈ', Key_W) \ + OP(L'ੋ', Key_A) \ + OP(L'ੌ', Key_Q) \ + OP(L'੍', Key_D) \ + OP(L'ੜ', LSHIFT(Key_J)) \ + OP(L'੦', Key_0) \ + OP(L'੧', Key_1) \ + OP(L'੨', Key_2) \ + OP(L'੩', Key_3) \ + OP(L'੪', Key_4) \ + OP(L'੫', Key_5) \ + OP(L'੬', Key_6) \ + OP(L'੭', Key_7) \ + OP(L'੮', Key_8) \ + OP(L'੯', Key_9) \ + OP(L'ੰ', LSHIFT(Key_X)) \ + OP(L'ੱ', LSHIFT(Key_3)) \ + OP(L'ੴ', LSHIFT(Key_4)) \ + OP(L'₹', RALT(Key_4)) \ + OP(L'☬', LSHIFT(Key_5)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace guru { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace guru +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/hin-kagapa/keymap.h b/src/kaleidoscope/host_keymap/linux/in/hin-kagapa/keymap.h new file mode 100644 index 0000000000..8e2593c4da --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/hin-kagapa/keymap.h @@ -0,0 +1,393 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: hin-kagapa + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ँ', RALT(LSHIFT(Key_8))) \ + OP(L'ं', LSHIFT(Key_M)) \ + OP(L'ः', LSHIFT(Key_H)) \ + OP(L'अ', RALT(Key_A)) \ + OP(L'आ', LSHIFT(Key_A)) \ + OP(L'इ', RALT(Key_I)) \ + OP(L'ई', RALT(LSHIFT(Key_I))) \ + OP(L'उ', RALT(Key_U)) \ + OP(L'ऊ', RALT(LSHIFT(Key_U))) \ + OP(L'ऋ', RALT(Key_R)) \ + OP(L'ऌ', RALT(LSHIFT(Key_L))) \ + OP(L'ऍ', RALT(LSHIFT(Key_Comma))) \ + OP(L'ऎ', RALT(Key_E)) \ + OP(L'ए', RALT(LSHIFT(Key_E))) \ + OP(L'ऐ', RALT(Key_Y)) \ + OP(L'ऑ', RALT(LSHIFT(Key_Period))) \ + OP(L'ऒ', RALT(Key_O)) \ + OP(L'ओ', RALT(LSHIFT(Key_O))) \ + OP(L'औ', RALT(Key_V)) \ + OP(L'क', Key_K) \ + OP(L'ख', LSHIFT(Key_K)) \ + OP(L'ग', Key_G) \ + OP(L'घ', LSHIFT(Key_G)) \ + OP(L'ङ', LSHIFT(Key_Z)) \ + OP(L'च', Key_C) \ + OP(L'छ', LSHIFT(Key_C)) \ + OP(L'ज', Key_J) \ + OP(L'झ', LSHIFT(Key_J)) \ + OP(L'ञ', Key_Z) \ + OP(L'ट', Key_Q) \ + OP(L'ठ', LSHIFT(Key_Q)) \ + OP(L'ड', Key_W) \ + OP(L'ढ', LSHIFT(Key_W)) \ + OP(L'ण', LSHIFT(Key_N)) \ + OP(L'त', Key_T) \ + OP(L'थ', LSHIFT(Key_T)) \ + OP(L'द', Key_D) \ + OP(L'ध', LSHIFT(Key_D)) \ + OP(L'न', Key_N) \ + OP(L'ऩ', RALT(Key_N)) \ + OP(L'प', Key_P) \ + OP(L'फ', LSHIFT(Key_P)) \ + OP(L'ब', Key_B) \ + OP(L'भ', LSHIFT(Key_B)) \ + OP(L'म', Key_M) \ + OP(L'य', Key_Y) \ + OP(L'र', Key_R) \ + OP(L'ऱ', RALT(LSHIFT(Key_R))) \ + OP(L'ल', Key_L) \ + OP(L'ळ', LSHIFT(Key_L)) \ + OP(L'ऴ', RALT(Key_X)) \ + OP(L'व', Key_V) \ + OP(L'श', LSHIFT(Key_S)) \ + OP(L'ष', Key_X) \ + OP(L'स', Key_S) \ + OP(L'ह', Key_H) \ + OP(L'़', LSHIFT(Key_X)) \ + OP(L'ऽ', RALT(Key_M)) \ + OP(L'ा', Key_A) \ + OP(L'ि', Key_I) \ + OP(L'ी', LSHIFT(Key_I)) \ + OP(L'ु', Key_U) \ + OP(L'ू', LSHIFT(Key_U)) \ + OP(L'ृ', LSHIFT(Key_R)) \ + OP(L'ॄ', LSHIFT(Key_F)) \ + OP(L'ॅ', RALT(Key_Comma)) \ + OP(L'ॆ', Key_E) \ + OP(L'े', LSHIFT(Key_E)) \ + OP(L'ै', LSHIFT(Key_Y)) \ + OP(L'ॉ', RALT(Key_Period)) \ + OP(L'ॊ', Key_O) \ + OP(L'ो', LSHIFT(Key_O)) \ + OP(L'ौ', LSHIFT(Key_V)) \ + OP(L'्', Key_F) \ + OP(L'ॐ', RALT(LSHIFT(Key_M))) \ + OP(L'॑', RALT(Key_Quote)) \ + OP(L'॒', RALT(Key_Minus)) \ + OP(L'क़', RALT(Key_K)) \ + OP(L'ख़', RALT(LSHIFT(Key_K))) \ + OP(L'ग़', RALT(Key_G)) \ + OP(L'ज़', RALT(Key_J)) \ + OP(L'ड़', RALT(Key_W)) \ + OP(L'ढ़', RALT(LSHIFT(Key_W))) \ + OP(L'फ़', RALT(Key_P)) \ + OP(L'य़', RALT(LSHIFT(Key_Y))) \ + OP(L'ॠ', RALT(Key_F)) \ + OP(L'ॢ', RALT(Key_L)) \ + OP(L'।', RALT(Key_NonUsPound)) \ + OP(L'॥', RALT(LSHIFT(Key_NonUsPound))) \ + OP(L'०', RALT(Key_0)) \ + OP(L'१', RALT(Key_1)) \ + OP(L'२', RALT(Key_2)) \ + OP(L'३', RALT(Key_3)) \ + OP(L'४', RALT(Key_4)) \ + OP(L'५', RALT(Key_5)) \ + OP(L'६', RALT(Key_6)) \ + OP(L'७', RALT(Key_7)) \ + OP(L'८', RALT(Key_8)) \ + OP(L'९', RALT(Key_9)) \ + OP(L'॰', RALT(LSHIFT(Key_0))) \ + OP(L'ॲ', RALT(LSHIFT(Key_A))) \ + OP(L'ᳲ', RALT(Key_Semicolon)) \ + OP(L'ᳳ', RALT(LSHIFT(Key_Semicolon))) \ + OP(L'ᳵ', RALT(Key_H)) \ + OP(L'ᳶ', RALT(LSHIFT(Key_H))) \ + OP(L'‌', RALT(LSHIFT(Key_6))) \ + OP(L'‍', RALT(LSHIFT(Key_7))) \ + OP(L'“', RALT(Key_Backtick)) \ + OP(L'”', RALT(LSHIFT(Key_Quote))) \ + OP(L'₨', RALT(LSHIFT(Key_2))) /* U+20a8, XKB_KEY_RupeeSign, RUPEE SIGN */ \ + OP(L'₹', RALT(LSHIFT(Key_4))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_RupeeSign, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace hin_kagapa { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace hin_kagapa +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/hin-wx/keymap.h b/src/kaleidoscope/host_keymap/linux/in/hin-wx/keymap.h new file mode 100644 index 0000000000..7554cef921 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/hin-wx/keymap.h @@ -0,0 +1,355 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: hin-wx + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', RALT(Key_Backtick)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', RALT(Key_Backtick)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ँ', Key_Z) \ + OP(L'ं', LSHIFT(Key_M)) \ + OP(L'ः', LSHIFT(Key_H)) \ + OP(L'अ', RALT(Key_A)) \ + OP(L'आ', RALT(LSHIFT(Key_A))) \ + OP(L'इ', RALT(Key_I)) \ + OP(L'ई', RALT(LSHIFT(Key_I))) \ + OP(L'उ', RALT(Key_U)) \ + OP(L'ऊ', RALT(LSHIFT(Key_U))) \ + OP(L'ऋ', RALT(Key_Q)) \ + OP(L'ऌ', RALT(LSHIFT(Key_L))) \ + OP(L'ए', RALT(Key_E)) \ + OP(L'ऐ', RALT(LSHIFT(Key_E))) \ + OP(L'ओ', RALT(Key_O)) \ + OP(L'औ', RALT(LSHIFT(Key_O))) \ + OP(L'क', Key_K) \ + OP(L'ख', LSHIFT(Key_K)) \ + OP(L'ग', Key_G) \ + OP(L'घ', LSHIFT(Key_G)) \ + OP(L'ङ', Key_F) \ + OP(L'च', Key_C) \ + OP(L'छ', LSHIFT(Key_C)) \ + OP(L'ज', Key_J) \ + OP(L'झ', LSHIFT(Key_J)) \ + OP(L'ञ', LSHIFT(Key_F)) \ + OP(L'ट', Key_T) \ + OP(L'ठ', LSHIFT(Key_T)) \ + OP(L'ड', Key_D) \ + OP(L'ढ', LSHIFT(Key_D)) \ + OP(L'ण', LSHIFT(Key_N)) \ + OP(L'त', Key_W) \ + OP(L'थ', LSHIFT(Key_W)) \ + OP(L'द', Key_X) \ + OP(L'ध', LSHIFT(Key_X)) \ + OP(L'न', Key_N) \ + OP(L'प', Key_P) \ + OP(L'फ', LSHIFT(Key_P)) \ + OP(L'ब', Key_B) \ + OP(L'भ', LSHIFT(Key_B)) \ + OP(L'म', Key_M) \ + OP(L'य', Key_Y) \ + OP(L'र', Key_R) \ + OP(L'ल', Key_L) \ + OP(L'ळ', RALT(Key_L)) \ + OP(L'व', Key_V) \ + OP(L'श', LSHIFT(Key_S)) \ + OP(L'ष', LSHIFT(Key_R)) \ + OP(L'स', Key_S) \ + OP(L'ह', Key_H) \ + OP(L'़', LSHIFT(Key_Z)) \ + OP(L'ऽ', RALT(Key_Z)) \ + OP(L'ा', LSHIFT(Key_A)) \ + OP(L'ि', Key_I) \ + OP(L'ी', LSHIFT(Key_I)) \ + OP(L'ु', Key_U) \ + OP(L'ू', LSHIFT(Key_U)) \ + OP(L'ृ', Key_Q) \ + OP(L'ॄ', LSHIFT(Key_Q)) \ + OP(L'े', Key_E) \ + OP(L'ै', LSHIFT(Key_E)) \ + OP(L'ो', Key_O) \ + OP(L'ौ', LSHIFT(Key_O)) \ + OP(L'्', Key_A) \ + OP(L'ॐ', RALT(LSHIFT(Key_Z))) \ + OP(L'ॠ', RALT(LSHIFT(Key_Q))) \ + OP(L'ॢ', LSHIFT(Key_L)) \ + OP(L'।', RALT(Key_NonUsPound)) \ + OP(L'॥', RALT(LSHIFT(Key_NonUsPound))) \ + OP(L'०', Key_0) \ + OP(L'१', Key_1) \ + OP(L'२', Key_2) \ + OP(L'३', Key_3) \ + OP(L'४', Key_4) \ + OP(L'५', Key_5) \ + OP(L'६', Key_6) \ + OP(L'७', Key_7) \ + OP(L'८', Key_8) \ + OP(L'९', Key_9) \ + OP(L'₹', RALT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_2, RALT(Key_Backtick)) \ + OP(XKB_KEY_3, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace hin_wx { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace hin_wx +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/jhelum/keymap.h b/src/kaleidoscope/host_keymap/linux/in/jhelum/keymap.h new file mode 100644 index 0000000000..900eae0091 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/jhelum/keymap.h @@ -0,0 +1,357 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: jhelum + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(LSHIFT(Key_7))) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(LSHIFT(Key_NonUsPound))) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_6))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(LSHIFT(Key_7))) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(LSHIFT(Key_NonUsPound))) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_6))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'।', Key_NonUsPound) \ + OP(L'॥', LSHIFT(Key_NonUsPound)) \ + OP(L'ਁ', RALT(LSHIFT(Key_Backtick))) \ + OP(L'ਂ', Key_X) \ + OP(L'ਅ', LSHIFT(Key_D)) \ + OP(L'ਆ', LSHIFT(Key_E)) \ + OP(L'ਇ', LSHIFT(Key_F)) \ + OP(L'ਈ', LSHIFT(Key_R)) \ + OP(L'ਉ', LSHIFT(Key_G)) \ + OP(L'ਊ', LSHIFT(Key_T)) \ + OP(L'ਏ', LSHIFT(Key_S)) \ + OP(L'ਐ', LSHIFT(Key_W)) \ + OP(L'ਓ', LSHIFT(Key_A)) \ + OP(L'ਔ', LSHIFT(Key_Q)) \ + OP(L'ਕ', Key_K) \ + OP(L'ਖ', LSHIFT(Key_K)) \ + OP(L'ਗ', Key_I) \ + OP(L'ਘ', LSHIFT(Key_I)) \ + OP(L'ਙ', Key_RightBracket) \ + OP(L'ਚ', Key_C) \ + OP(L'ਛ', LSHIFT(Key_C)) \ + OP(L'ਜ', Key_J) \ + OP(L'ਝ', LSHIFT(Key_J)) \ + OP(L'ਞ', LSHIFT(Key_RightBracket)) \ + OP(L'ਟ', LSHIFT(Key_O)) \ + OP(L'ਠ', LSHIFT(Key_H)) \ + OP(L'ਡ', Key_LeftBracket) \ + OP(L'ਢ', LSHIFT(Key_LeftBracket)) \ + OP(L'ਣ', LSHIFT(Key_N)) \ + OP(L'ਤ', Key_O) \ + OP(L'ਥ', LSHIFT(Key_L)) \ + OP(L'ਦ', Key_U) \ + OP(L'ਧ', LSHIFT(Key_U)) \ + OP(L'ਨ', Key_N) \ + OP(L'ਪ', Key_P) \ + OP(L'ਬ', Key_B) \ + OP(L'ਭ', LSHIFT(Key_B)) \ + OP(L'ਮ', Key_M) \ + OP(L'ਯ', LSHIFT(Key_V)) \ + OP(L'ਰ', Key_Y) \ + OP(L'ਲ', Key_L) \ + OP(L'ਲ਼', RALT(Key_L)) \ + OP(L'ਵ', Key_V) \ + OP(L'ਸ਼', RALT(Key_Semicolon)) \ + OP(L'ਸ', Key_Semicolon) \ + OP(L'ਹ', Key_H) \ + OP(L'਼', LSHIFT(Key_Z)) \ + OP(L'ਾ', Key_E) \ + OP(L'ਿ', Key_F) \ + OP(L'ੀ', Key_R) \ + OP(L'ੁ', Key_G) \ + OP(L'ੂ', Key_T) \ + OP(L'ੇ', Key_S) \ + OP(L'ੈ', Key_W) \ + OP(L'ੋ', Key_A) \ + OP(L'ੌ', Key_Q) \ + OP(L'੍', Key_D) \ + OP(L'ਖ਼', RALT(LSHIFT(Key_K))) \ + OP(L'ਗ਼', RALT(Key_I)) \ + OP(L'ਜ਼', RALT(Key_J)) \ + OP(L'ੜ', LSHIFT(Key_Y)) \ + OP(L'ਫ਼', LSHIFT(Key_P)) \ + OP(L'੦', RALT(Key_0)) \ + OP(L'੧', RALT(Key_1)) \ + OP(L'੨', RALT(Key_2)) \ + OP(L'੩', RALT(Key_3)) \ + OP(L'੪', RALT(Key_4)) \ + OP(L'੫', RALT(Key_5)) \ + OP(L'੬', RALT(Key_6)) \ + OP(L'੭', RALT(Key_7)) \ + OP(L'੮', RALT(Key_8)) \ + OP(L'੯', RALT(Key_9)) \ + OP(L'ੰ', LSHIFT(Key_X)) \ + OP(L'ੱ', Key_Z) \ + OP(L'ੲ', LSHIFT(Key_7)) \ + OP(L'ੳ', LSHIFT(Key_6)) \ + OP(L'ੴ', LSHIFT(Key_Period)) \ + OP(L'₹', RALT(Key_R)) \ + OP(L'☬', LSHIFT(Key_Comma)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_bar, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_braceright, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace jhelum { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace jhelum +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/kan-kagapa/keymap.h b/src/kaleidoscope/host_keymap/linux/in/kan-kagapa/keymap.h new file mode 100644 index 0000000000..80fbc2c00f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/kan-kagapa/keymap.h @@ -0,0 +1,376 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: kan-kagapa + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ँ', RALT(LSHIFT(Key_8))) \ + OP(L'ॐ', RALT(LSHIFT(Key_M))) \ + OP(L'॑', RALT(Key_Quote)) \ + OP(L'॒', RALT(Key_Minus)) \ + OP(L'।', RALT(Key_NonUsPound)) \ + OP(L'॥', RALT(LSHIFT(Key_NonUsPound))) \ + OP(L'ಂ', LSHIFT(Key_M)) \ + OP(L'ಃ', LSHIFT(Key_H)) \ + OP(L'ಅ', RALT(Key_A)) \ + OP(L'ಆ', LSHIFT(Key_A)) \ + OP(L'ಇ', RALT(Key_I)) \ + OP(L'ಈ', RALT(LSHIFT(Key_I))) \ + OP(L'ಉ', RALT(Key_U)) \ + OP(L'ಊ', RALT(LSHIFT(Key_U))) \ + OP(L'ಋ', RALT(Key_R)) \ + OP(L'ಌ', RALT(LSHIFT(Key_L))) \ + OP(L'ಎ', RALT(Key_E)) \ + OP(L'ಏ', RALT(LSHIFT(Key_E))) \ + OP(L'ಐ', RALT(Key_Y)) \ + OP(L'ಒ', RALT(Key_O)) \ + OP(L'ಓ', RALT(LSHIFT(Key_O))) \ + OP(L'ಔ', RALT(Key_V)) \ + OP(L'ಕ', Key_K) \ + OP(L'ಖ', LSHIFT(Key_K)) \ + OP(L'ಗ', Key_G) \ + OP(L'ಘ', LSHIFT(Key_G)) \ + OP(L'ಙ', LSHIFT(Key_Z)) \ + OP(L'ಚ', Key_C) \ + OP(L'ಛ', LSHIFT(Key_C)) \ + OP(L'ಜ', Key_J) \ + OP(L'ಝ', LSHIFT(Key_J)) \ + OP(L'ಞ', Key_Z) \ + OP(L'ಟ', Key_Q) \ + OP(L'ಠ', LSHIFT(Key_Q)) \ + OP(L'ಡ', Key_W) \ + OP(L'ಢ', LSHIFT(Key_W)) \ + OP(L'ಣ', LSHIFT(Key_N)) \ + OP(L'ತ', Key_T) \ + OP(L'ಥ', LSHIFT(Key_T)) \ + OP(L'ದ', Key_D) \ + OP(L'ಧ', LSHIFT(Key_D)) \ + OP(L'ನ', Key_N) \ + OP(L'ಪ', Key_P) \ + OP(L'ಫ', LSHIFT(Key_P)) \ + OP(L'ಬ', Key_B) \ + OP(L'ಭ', LSHIFT(Key_B)) \ + OP(L'ಮ', Key_M) \ + OP(L'ಯ', Key_Y) \ + OP(L'ರ', Key_R) \ + OP(L'ಱ', RALT(Key_Comma)) \ + OP(L'ಲ', Key_L) \ + OP(L'ಳ', LSHIFT(Key_L)) \ + OP(L'ವ', Key_V) \ + OP(L'ಶ', LSHIFT(Key_S)) \ + OP(L'ಷ', Key_X) \ + OP(L'ಸ', Key_S) \ + OP(L'ಹ', Key_H) \ + OP(L'಼', LSHIFT(Key_X)) \ + OP(L'ಽ', RALT(Key_M)) \ + OP(L'ಾ', Key_A) \ + OP(L'ಿ', Key_I) \ + OP(L'ೀ', LSHIFT(Key_I)) \ + OP(L'ು', Key_U) \ + OP(L'ೂ', LSHIFT(Key_U)) \ + OP(L'ೃ', LSHIFT(Key_R)) \ + OP(L'ೄ', LSHIFT(Key_F)) \ + OP(L'ೆ', Key_E) \ + OP(L'ೇ', LSHIFT(Key_E)) \ + OP(L'ೈ', LSHIFT(Key_Y)) \ + OP(L'ೊ', Key_O) \ + OP(L'ೋ', LSHIFT(Key_O)) \ + OP(L'ೌ', LSHIFT(Key_V)) \ + OP(L'್', Key_F) \ + OP(L'ೞ', RALT(Key_X)) \ + OP(L'ೠ', RALT(Key_F)) \ + OP(L'ೢ', RALT(Key_L)) \ + OP(L'೦', RALT(Key_0)) \ + OP(L'೧', RALT(Key_1)) \ + OP(L'೨', RALT(Key_2)) \ + OP(L'೩', RALT(Key_3)) \ + OP(L'೪', RALT(Key_4)) \ + OP(L'೫', RALT(Key_5)) \ + OP(L'೬', RALT(Key_6)) \ + OP(L'೭', RALT(Key_7)) \ + OP(L'೮', RALT(Key_8)) \ + OP(L'೯', RALT(Key_9)) \ + OP(L'ೱ', RALT(Key_H)) \ + OP(L'ೲ', RALT(LSHIFT(Key_H))) \ + OP(L'‌', RALT(LSHIFT(Key_6))) \ + OP(L'‍', RALT(LSHIFT(Key_7))) \ + OP(L'“', RALT(Key_Backtick)) \ + OP(L'”', RALT(LSHIFT(Key_Quote))) \ + OP(L'₨', RALT(LSHIFT(Key_2))) /* U+20a8, XKB_KEY_RupeeSign, RUPEE SIGN */ \ + OP(L'₹', RALT(LSHIFT(Key_4))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_RupeeSign, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace kan_kagapa { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace kan_kagapa +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/kan/keymap.h b/src/kaleidoscope/host_keymap/linux/in/kan/keymap.h new file mode 100644 index 0000000000..aa26899ddb --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/kan/keymap.h @@ -0,0 +1,283 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: kan + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('@', LSHIFT(Key_Slash)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'@', LSHIFT(Key_Slash)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ಂ', Key_X) \ + OP(L'ಃ', Key_Minus) \ + OP(L'ಅ', LSHIFT(Key_D)) \ + OP(L'ಆ', LSHIFT(Key_E)) \ + OP(L'ಇ', LSHIFT(Key_F)) \ + OP(L'ಈ', LSHIFT(Key_R)) \ + OP(L'ಉ', LSHIFT(Key_G)) \ + OP(L'ಊ', LSHIFT(Key_T)) \ + OP(L'ಋ', LSHIFT(Key_Equals)) \ + OP(L'ಎ', LSHIFT(Key_Z)) \ + OP(L'ಏ', LSHIFT(Key_S)) \ + OP(L'ಐ', LSHIFT(Key_W)) \ + OP(L'ಒ', LSHIFT(Key_Backtick)) \ + OP(L'ಓ', LSHIFT(Key_A)) \ + OP(L'ಔ', LSHIFT(Key_Q)) \ + OP(L'ಕ', Key_K) \ + OP(L'ಖ', LSHIFT(Key_K)) \ + OP(L'ಗ', Key_I) \ + OP(L'ಘ', LSHIFT(Key_I)) \ + OP(L'ಙ', LSHIFT(Key_U)) \ + OP(L'ಚ', Key_Semicolon) \ + OP(L'ಛ', LSHIFT(Key_Semicolon)) \ + OP(L'ಜ', Key_P) \ + OP(L'ಝ', LSHIFT(Key_P)) \ + OP(L'ಞ', LSHIFT(Key_RightBracket)) \ + OP(L'ಟ', Key_Quote) \ + OP(L'ಠ', LSHIFT(Key_Quote)) \ + OP(L'ಡ', Key_LeftBracket) \ + OP(L'ಢ', LSHIFT(Key_LeftBracket)) \ + OP(L'ಣ', LSHIFT(Key_C)) \ + OP(L'ತ', Key_L) \ + OP(L'ಥ', LSHIFT(Key_L)) \ + OP(L'ದ', Key_O) \ + OP(L'ಧ', LSHIFT(Key_O)) \ + OP(L'ನ', Key_V) \ + OP(L'ಪ', Key_H) \ + OP(L'ಫ', LSHIFT(Key_H)) \ + OP(L'ಬ', Key_Y) \ + OP(L'ಭ', LSHIFT(Key_Y)) \ + OP(L'ಮ', Key_C) \ + OP(L'ಯ', Key_Slash) \ + OP(L'ರ', Key_J) \ + OP(L'ಱ', LSHIFT(Key_J)) \ + OP(L'ಲ', Key_N) \ + OP(L'ಳ', LSHIFT(Key_N)) \ + OP(L'಴', LSHIFT(Key_B)) \ + OP(L'ವ', Key_B) \ + OP(L'ಶ', LSHIFT(Key_M)) \ + OP(L'ಷ', LSHIFT(Key_Comma)) \ + OP(L'ಸ', Key_M) \ + OP(L'ಹ', Key_U) \ + OP(L'಼', Key_RightBracket) \ + OP(L'ಾ', Key_E) \ + OP(L'ಿ', Key_F) \ + OP(L'ೀ', Key_R) \ + OP(L'ು', Key_G) \ + OP(L'ೂ', Key_T) \ + OP(L'ೃ', Key_Equals) \ + OP(L'ೆ', Key_Z) \ + OP(L'ೇ', Key_S) \ + OP(L'ೈ', Key_W) \ + OP(L'ೊ', Key_Backtick) \ + OP(L'ೋ', Key_A) \ + OP(L'ೌ', Key_Q) \ + OP(L'್', Key_D) \ + OP(L'೦', Key_0) \ + OP(L'೧', Key_1) \ + OP(L'೨', Key_2) \ + OP(L'೩', Key_3) \ + OP(L'೪', Key_4) \ + OP(L'೫', Key_5) \ + OP(L'೬', Key_6) \ + OP(L'೭', Key_7) \ + OP(L'೮', Key_8) \ + OP(L'೯', Key_9) \ + OP(L'₹', RALT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_at, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace kan { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace kan +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/mal/keymap.h b/src/kaleidoscope/host_keymap/linux/in/mal/keymap.h new file mode 100644 index 0000000000..bcb9c65e02 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/mal/keymap.h @@ -0,0 +1,314 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: mal + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('\\', LSHIFT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'\\', LSHIFT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ം', Key_X) \ + OP(L'ഃ', LSHIFT(Key_Minus)) \ + OP(L'അ', LSHIFT(Key_D)) \ + OP(L'ആ', LSHIFT(Key_E)) \ + OP(L'ഇ', LSHIFT(Key_F)) \ + OP(L'ഈ', LSHIFT(Key_R)) \ + OP(L'ഉ', LSHIFT(Key_G)) \ + OP(L'ഊ', LSHIFT(Key_T)) \ + OP(L'ഋ', LSHIFT(Key_Equals)) \ + OP(L'എ', LSHIFT(Key_Z)) \ + OP(L'ഏ', LSHIFT(Key_S)) \ + OP(L'ഐ', LSHIFT(Key_W)) \ + OP(L'ഒ', LSHIFT(Key_Backtick)) \ + OP(L'ഓ', LSHIFT(Key_A)) \ + OP(L'ഔ', LSHIFT(Key_Q)) \ + OP(L'ക', Key_K) \ + OP(L'ഖ', LSHIFT(Key_K)) \ + OP(L'ഗ', Key_I) \ + OP(L'ഘ', LSHIFT(Key_I)) \ + OP(L'ങ', LSHIFT(Key_U)) \ + OP(L'ച', Key_Semicolon) \ + OP(L'ഛ', LSHIFT(Key_Semicolon)) \ + OP(L'ജ', Key_P) \ + OP(L'ഝ', LSHIFT(Key_P)) \ + OP(L'ഞ', LSHIFT(Key_RightBracket)) \ + OP(L'ട', Key_Quote) \ + OP(L'ഠ', LSHIFT(Key_Quote)) \ + OP(L'ഡ', Key_LeftBracket) \ + OP(L'ഢ', LSHIFT(Key_LeftBracket)) \ + OP(L'ണ', LSHIFT(Key_C)) \ + OP(L'ത', Key_L) \ + OP(L'ഥ', LSHIFT(Key_L)) \ + OP(L'ദ', Key_O) \ + OP(L'ധ', LSHIFT(Key_O)) \ + OP(L'ന', Key_V) \ + OP(L'പ', Key_H) \ + OP(L'ഫ', LSHIFT(Key_H)) \ + OP(L'ബ', Key_Y) \ + OP(L'ഭ', LSHIFT(Key_Y)) \ + OP(L'മ', Key_C) \ + OP(L'യ', Key_Slash) \ + OP(L'ര', Key_J) \ + OP(L'റ', LSHIFT(Key_J)) \ + OP(L'ല', Key_N) \ + OP(L'ള', LSHIFT(Key_N)) \ + OP(L'ഴ', LSHIFT(Key_B)) \ + OP(L'വ', Key_B) \ + OP(L'ശ', LSHIFT(Key_M)) \ + OP(L'ഷ', LSHIFT(Key_Comma)) \ + OP(L'സ', Key_M) \ + OP(L'ഹ', Key_U) \ + OP(L'ാ', Key_E) \ + OP(L'ി', Key_F) \ + OP(L'ീ', Key_R) \ + OP(L'ു', Key_G) \ + OP(L'ൂ', Key_T) \ + OP(L'ൃ', Key_Equals) \ + OP(L'െ', Key_Z) \ + OP(L'േ', Key_S) \ + OP(L'ൈ', Key_W) \ + OP(L'ൊ', Key_Backtick) \ + OP(L'ോ', Key_A) \ + OP(L'ൌ', Key_Q) \ + OP(L'്', Key_D) \ + OP(L'൦', Key_0) \ + OP(L'൧', Key_1) \ + OP(L'൨', Key_2) \ + OP(L'൩', Key_3) \ + OP(L'൪', Key_4) \ + OP(L'൫', Key_5) \ + OP(L'൬', Key_6) \ + OP(L'൭', Key_7) \ + OP(L'൮', Key_8) \ + OP(L'൯', Key_9) \ + OP(L'​', LSHIFT(Key_X)) \ + OP(L'‌', Key_NonUsPound) \ + OP(L'‍', Key_RightBracket) \ + OP(L'₹', RALT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace mal { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mal +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/mal_enhanced/keymap.h b/src/kaleidoscope/host_keymap/linux/in/mal_enhanced/keymap.h new file mode 100644 index 0000000000..321006a685 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/mal_enhanced/keymap.h @@ -0,0 +1,316 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: mal_enhanced + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('\\', LSHIFT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'\\', LSHIFT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ം', Key_X) \ + OP(L'ഃ', LSHIFT(Key_Minus)) \ + OP(L'അ', LSHIFT(Key_D)) \ + OP(L'ആ', LSHIFT(Key_E)) \ + OP(L'ഇ', LSHIFT(Key_F)) \ + OP(L'ഈ', LSHIFT(Key_R)) \ + OP(L'ഉ', LSHIFT(Key_G)) \ + OP(L'ഊ', LSHIFT(Key_T)) \ + OP(L'ഋ', LSHIFT(Key_Equals)) \ + OP(L'എ', LSHIFT(Key_Z)) \ + OP(L'ഏ', LSHIFT(Key_S)) \ + OP(L'ഐ', LSHIFT(Key_W)) \ + OP(L'ഒ', LSHIFT(Key_Backtick)) \ + OP(L'ഓ', LSHIFT(Key_A)) \ + OP(L'ഔ', LSHIFT(Key_Q)) \ + OP(L'ക', Key_K) \ + OP(L'ഖ', LSHIFT(Key_K)) \ + OP(L'ഗ', Key_I) \ + OP(L'ഘ', LSHIFT(Key_I)) \ + OP(L'ങ', LSHIFT(Key_U)) \ + OP(L'ച', Key_Semicolon) \ + OP(L'ഛ', LSHIFT(Key_Semicolon)) \ + OP(L'ജ', Key_P) \ + OP(L'ഝ', LSHIFT(Key_P)) \ + OP(L'ഞ', LSHIFT(Key_RightBracket)) \ + OP(L'ട', Key_Quote) \ + OP(L'ഠ', LSHIFT(Key_Quote)) \ + OP(L'ഡ', Key_LeftBracket) \ + OP(L'ഢ', LSHIFT(Key_LeftBracket)) \ + OP(L'ണ', LSHIFT(Key_C)) \ + OP(L'ത', Key_L) \ + OP(L'ഥ', LSHIFT(Key_L)) \ + OP(L'ദ', Key_O) \ + OP(L'ധ', LSHIFT(Key_O)) \ + OP(L'ന', Key_V) \ + OP(L'പ', Key_H) \ + OP(L'ഫ', LSHIFT(Key_H)) \ + OP(L'ബ', Key_Y) \ + OP(L'ഭ', LSHIFT(Key_Y)) \ + OP(L'മ', Key_C) \ + OP(L'യ', Key_Slash) \ + OP(L'ര', Key_J) \ + OP(L'റ', LSHIFT(Key_J)) \ + OP(L'ല', Key_N) \ + OP(L'ള', LSHIFT(Key_N)) \ + OP(L'ഴ', LSHIFT(Key_B)) \ + OP(L'വ', Key_B) \ + OP(L'ശ', LSHIFT(Key_M)) \ + OP(L'ഷ', LSHIFT(Key_Comma)) \ + OP(L'സ', Key_M) \ + OP(L'ഹ', Key_U) \ + OP(L'ാ', Key_E) \ + OP(L'ി', Key_F) \ + OP(L'ീ', Key_R) \ + OP(L'ു', Key_G) \ + OP(L'ൂ', Key_T) \ + OP(L'ൃ', Key_Equals) \ + OP(L'െ', Key_Z) \ + OP(L'േ', Key_S) \ + OP(L'ൈ', Key_W) \ + OP(L'ൊ', Key_Backtick) \ + OP(L'ോ', Key_A) \ + OP(L'്', Key_D) \ + OP(L'ൗ', Key_Q) \ + OP(L'൦', Key_0) \ + OP(L'൧', Key_1) \ + OP(L'൨', Key_2) \ + OP(L'൩', Key_3) \ + OP(L'൪', Key_4) \ + OP(L'൫', Key_5) \ + OP(L'൬', Key_6) \ + OP(L'൭', Key_7) \ + OP(L'൮', Key_8) \ + OP(L'൯', Key_9) \ + OP(L'ൺ', LSHIFT(Key_X)) \ + OP(L'ൻ', LSHIFT(Key_V)) \ + OP(L'ർ', Key_NonUsPound) \ + OP(L'ൽ', LSHIFT(Key_Period)) \ + OP(L'ൾ', LSHIFT(Key_8)) \ + OP(L'‍', Key_RightBracket) \ + OP(L'₹', RALT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace mal_enhanced { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mal_enhanced +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/mal_lalitha/keymap.h b/src/kaleidoscope/host_keymap/linux/in/mal_lalitha/keymap.h new file mode 100644 index 0000000000..6ee953e1ef --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/mal_lalitha/keymap.h @@ -0,0 +1,358 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: mal_lalitha + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ം', LSHIFT(Key_Backtick)) \ + OP(L'ഃ', LSHIFT(Key_H)) \ + OP(L'അ', LSHIFT(Key_A)) \ + OP(L'ആ', RALT(Key_A)) \ + OP(L'ഇ', RALT(Key_I)) \ + OP(L'ഈ', RALT(LSHIFT(Key_I))) \ + OP(L'ഉ', RALT(Key_U)) \ + OP(L'ഊ', RALT(LSHIFT(Key_U))) \ + OP(L'ഋ', RALT(LSHIFT(Key_R))) \ + OP(L'എ', RALT(Key_E)) \ + OP(L'ഏ', RALT(LSHIFT(Key_E))) \ + OP(L'ഐ', RALT(Key_Q)) \ + OP(L'ഒ', RALT(Key_O)) \ + OP(L'ഓ', RALT(LSHIFT(Key_O))) \ + OP(L'ഔ', RALT(LSHIFT(Key_Q))) \ + OP(L'ക', Key_K) \ + OP(L'ഖ', LSHIFT(Key_K)) \ + OP(L'ഗ', Key_G) \ + OP(L'ഘ', LSHIFT(Key_G)) \ + OP(L'ങ', RALT(Key_N)) \ + OP(L'ച', Key_C) \ + OP(L'ഛ', LSHIFT(Key_C)) \ + OP(L'ജ', Key_J) \ + OP(L'ഝ', LSHIFT(Key_J)) \ + OP(L'ഞ', RALT(LSHIFT(Key_N))) \ + OP(L'ട', RALT(Key_T)) \ + OP(L'ഠ', RALT(LSHIFT(Key_T))) \ + OP(L'ഡ', RALT(Key_D)) \ + OP(L'ഢ', RALT(LSHIFT(Key_D))) \ + OP(L'ണ', LSHIFT(Key_N)) \ + OP(L'ത', Key_T) \ + OP(L'ഥ', LSHIFT(Key_T)) \ + OP(L'ദ', Key_D) \ + OP(L'ധ', LSHIFT(Key_D)) \ + OP(L'ന', Key_N) \ + OP(L'പ', Key_P) \ + OP(L'ഫ', Key_F) \ + OP(L'ബ', Key_B) \ + OP(L'ഭ', LSHIFT(Key_B)) \ + OP(L'മ', Key_M) \ + OP(L'യ', Key_Y) \ + OP(L'ര', Key_R) \ + OP(L'റ', LSHIFT(Key_R)) \ + OP(L'ല', Key_L) \ + OP(L'ള', LSHIFT(Key_L)) \ + OP(L'ഴ', Key_Z) \ + OP(L'വ', Key_W) \ + OP(L'ശ', LSHIFT(Key_Z)) \ + OP(L'ഷ', LSHIFT(Key_S)) \ + OP(L'സ', Key_S) \ + OP(L'ഹ', Key_H) \ + OP(L'ാ', Key_A) \ + OP(L'ി', Key_I) \ + OP(L'ീ', LSHIFT(Key_I)) \ + OP(L'ു', Key_U) \ + OP(L'ൂ', LSHIFT(Key_U)) \ + OP(L'ൃ', RALT(Key_R)) \ + OP(L'െ', Key_E) \ + OP(L'േ', LSHIFT(Key_E)) \ + OP(L'ൈ', Key_Q) \ + OP(L'ൊ', Key_O) \ + OP(L'ോ', LSHIFT(Key_O)) \ + OP(L'ൌ', LSHIFT(Key_Q)) \ + OP(L'്', Key_Backtick) \ + OP(L'൦', RALT(Key_0)) \ + OP(L'൧', RALT(Key_1)) \ + OP(L'൨', RALT(Key_2)) \ + OP(L'൩', RALT(Key_3)) \ + OP(L'൫', RALT(Key_5)) \ + OP(L'൬', RALT(Key_6)) \ + OP(L'൭', RALT(Key_7)) \ + OP(L'൮', RALT(Key_8)) \ + OP(L'൯', RALT(Key_9)) \ + OP(L'​', LSHIFT(Key_X)) \ + OP(L'‌', RALT(Key_NonUsPound)) \ + OP(L'‍', LSHIFT(Key_V)) \ + OP(L'₹', RALT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace mal_lalitha { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mal_lalitha +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/mar-kagapa/keymap.h b/src/kaleidoscope/host_keymap/linux/in/mar-kagapa/keymap.h new file mode 100644 index 0000000000..261b43a4b1 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/mar-kagapa/keymap.h @@ -0,0 +1,393 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: mar-kagapa + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ँ', RALT(LSHIFT(Key_8))) \ + OP(L'ं', LSHIFT(Key_M)) \ + OP(L'ः', LSHIFT(Key_H)) \ + OP(L'अ', RALT(Key_A)) \ + OP(L'आ', LSHIFT(Key_A)) \ + OP(L'इ', RALT(Key_I)) \ + OP(L'ई', RALT(LSHIFT(Key_I))) \ + OP(L'उ', RALT(Key_U)) \ + OP(L'ऊ', RALT(LSHIFT(Key_U))) \ + OP(L'ऋ', RALT(Key_R)) \ + OP(L'ऌ', RALT(LSHIFT(Key_L))) \ + OP(L'ऍ', RALT(LSHIFT(Key_Comma))) \ + OP(L'ऎ', RALT(Key_E)) \ + OP(L'ए', RALT(LSHIFT(Key_E))) \ + OP(L'ऐ', RALT(Key_Y)) \ + OP(L'ऑ', RALT(LSHIFT(Key_Period))) \ + OP(L'ऒ', RALT(Key_O)) \ + OP(L'ओ', RALT(LSHIFT(Key_O))) \ + OP(L'औ', RALT(Key_V)) \ + OP(L'क', Key_K) \ + OP(L'ख', LSHIFT(Key_K)) \ + OP(L'ग', Key_G) \ + OP(L'घ', LSHIFT(Key_G)) \ + OP(L'ङ', LSHIFT(Key_Z)) \ + OP(L'च', Key_C) \ + OP(L'छ', LSHIFT(Key_C)) \ + OP(L'ज', Key_J) \ + OP(L'झ', LSHIFT(Key_J)) \ + OP(L'ञ', Key_Z) \ + OP(L'ट', Key_Q) \ + OP(L'ठ', LSHIFT(Key_Q)) \ + OP(L'ड', Key_W) \ + OP(L'ढ', LSHIFT(Key_W)) \ + OP(L'ण', LSHIFT(Key_N)) \ + OP(L'त', Key_T) \ + OP(L'थ', LSHIFT(Key_T)) \ + OP(L'द', Key_D) \ + OP(L'ध', LSHIFT(Key_D)) \ + OP(L'न', Key_N) \ + OP(L'ऩ', RALT(Key_N)) \ + OP(L'प', Key_P) \ + OP(L'फ', LSHIFT(Key_P)) \ + OP(L'ब', Key_B) \ + OP(L'भ', LSHIFT(Key_B)) \ + OP(L'म', Key_M) \ + OP(L'य', Key_Y) \ + OP(L'र', Key_R) \ + OP(L'ऱ', RALT(LSHIFT(Key_R))) \ + OP(L'ल', Key_L) \ + OP(L'ळ', LSHIFT(Key_L)) \ + OP(L'ऴ', RALT(Key_X)) \ + OP(L'व', Key_V) \ + OP(L'श', LSHIFT(Key_S)) \ + OP(L'ष', Key_X) \ + OP(L'स', Key_S) \ + OP(L'ह', Key_H) \ + OP(L'़', LSHIFT(Key_X)) \ + OP(L'ऽ', RALT(Key_M)) \ + OP(L'ा', Key_A) \ + OP(L'ि', Key_I) \ + OP(L'ी', LSHIFT(Key_I)) \ + OP(L'ु', Key_U) \ + OP(L'ू', LSHIFT(Key_U)) \ + OP(L'ृ', LSHIFT(Key_R)) \ + OP(L'ॄ', LSHIFT(Key_F)) \ + OP(L'ॅ', RALT(Key_Comma)) \ + OP(L'ॆ', Key_E) \ + OP(L'े', LSHIFT(Key_E)) \ + OP(L'ै', LSHIFT(Key_Y)) \ + OP(L'ॉ', RALT(Key_Period)) \ + OP(L'ॊ', Key_O) \ + OP(L'ो', LSHIFT(Key_O)) \ + OP(L'ौ', LSHIFT(Key_V)) \ + OP(L'्', Key_F) \ + OP(L'ॐ', RALT(LSHIFT(Key_M))) \ + OP(L'॑', RALT(Key_Quote)) \ + OP(L'॒', RALT(Key_Minus)) \ + OP(L'क़', RALT(Key_K)) \ + OP(L'ख़', RALT(LSHIFT(Key_K))) \ + OP(L'ग़', RALT(Key_G)) \ + OP(L'ज़', RALT(Key_J)) \ + OP(L'ड़', RALT(Key_W)) \ + OP(L'ढ़', RALT(LSHIFT(Key_W))) \ + OP(L'फ़', RALT(Key_P)) \ + OP(L'य़', RALT(LSHIFT(Key_Y))) \ + OP(L'ॠ', RALT(Key_F)) \ + OP(L'ॢ', RALT(Key_L)) \ + OP(L'।', RALT(Key_NonUsPound)) \ + OP(L'॥', RALT(LSHIFT(Key_NonUsPound))) \ + OP(L'०', RALT(Key_0)) \ + OP(L'१', RALT(Key_1)) \ + OP(L'२', RALT(Key_2)) \ + OP(L'३', RALT(Key_3)) \ + OP(L'४', RALT(Key_4)) \ + OP(L'५', RALT(Key_5)) \ + OP(L'६', RALT(Key_6)) \ + OP(L'७', RALT(Key_7)) \ + OP(L'८', RALT(Key_8)) \ + OP(L'९', RALT(Key_9)) \ + OP(L'॰', RALT(LSHIFT(Key_0))) \ + OP(L'ॲ', RALT(LSHIFT(Key_A))) \ + OP(L'ᳲ', RALT(Key_Semicolon)) \ + OP(L'ᳳ', RALT(LSHIFT(Key_Semicolon))) \ + OP(L'ᳵ', RALT(Key_H)) \ + OP(L'ᳶ', RALT(LSHIFT(Key_H))) \ + OP(L'‌', RALT(LSHIFT(Key_6))) \ + OP(L'‍', RALT(LSHIFT(Key_7))) \ + OP(L'“', RALT(Key_Backtick)) \ + OP(L'”', RALT(LSHIFT(Key_Quote))) \ + OP(L'₨', RALT(LSHIFT(Key_2))) /* U+20a8, XKB_KEY_RupeeSign, RUPEE SIGN */ \ + OP(L'₹', RALT(LSHIFT(Key_4))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_RupeeSign, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace mar_kagapa { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mar_kagapa +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/olck/keymap.h b/src/kaleidoscope/host_keymap/linux/in/olck/keymap.h new file mode 100644 index 0000000000..7bccc507e6 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/olck/keymap.h @@ -0,0 +1,310 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: olck + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'᱐', Key_0) \ + OP(L'᱑', Key_1) \ + OP(L'᱒', Key_2) \ + OP(L'᱓', Key_3) \ + OP(L'᱔', Key_4) \ + OP(L'᱕', Key_5) \ + OP(L'᱖', Key_6) \ + OP(L'᱗', Key_7) \ + OP(L'᱘', Key_8) \ + OP(L'᱙', Key_9) \ + OP(L'ᱚ', Key_O) \ + OP(L'ᱛ', LSHIFT(Key_T)) \ + OP(L'ᱜ', Key_G) \ + OP(L'ᱝ', Key_F) \ + OP(L'ᱞ', Key_L) \ + OP(L'ᱟ', Key_A) \ + OP(L'ᱠ', Key_K) \ + OP(L'ᱡ', Key_J) \ + OP(L'ᱢ', Key_M) \ + OP(L'ᱣ', Key_W) \ + OP(L'ᱤ', Key_I) \ + OP(L'ᱥ', Key_S) \ + OP(L'ᱦ', Key_H) \ + OP(L'ᱧ', Key_Q) \ + OP(L'ᱨ', Key_R) \ + OP(L'ᱩ', Key_U) \ + OP(L'ᱪ', Key_C) \ + OP(L'ᱫ', LSHIFT(Key_D)) \ + OP(L'ᱬ', LSHIFT(Key_M)) \ + OP(L'ᱭ', Key_Y) \ + OP(L'ᱮ', Key_E) \ + OP(L'ᱯ', Key_P) \ + OP(L'ᱰ', Key_D) \ + OP(L'ᱱ', Key_N) \ + OP(L'ᱲ', Key_Z) \ + OP(L'ᱳ', LSHIFT(Key_O)) \ + OP(L'ᱴ', Key_T) \ + OP(L'ᱵ', Key_B) \ + OP(L'ᱶ', Key_V) \ + OP(L'ᱷ', LSHIFT(Key_H)) \ + OP(L'ᱸ', LSHIFT(Key_N)) \ + OP(L'ᱹ', Key_Period) \ + OP(L'ᱺ', LSHIFT(Key_Semicolon)) \ + OP(L'ᱻ', LSHIFT(Key_Backtick)) \ + OP(L'ᱼ', LSHIFT(Key_Minus)) \ + OP(L'ᱽ', Key_X) \ + OP(L'᱾', LSHIFT(Key_NonUsPound)) \ + OP(L'᱿', Key_NonUsPound) \ + OP(L'₹', RALT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace olck { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace olck +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/ori/keymap.h b/src/kaleidoscope/host_keymap/linux/in/ori/keymap.h new file mode 100644 index 0000000000..485fd9b299 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/ori/keymap.h @@ -0,0 +1,278 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: ori + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('@', LSHIFT(Key_Slash)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'@', LSHIFT(Key_Slash)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ଁ', LSHIFT(Key_X)) \ + OP(L'ଂ', Key_X) \ + OP(L'ଃ', Key_Minus) \ + OP(L'ଅ', LSHIFT(Key_D)) \ + OP(L'ଆ', LSHIFT(Key_E)) \ + OP(L'ଇ', LSHIFT(Key_F)) \ + OP(L'ଈ', LSHIFT(Key_R)) \ + OP(L'ଉ', LSHIFT(Key_G)) \ + OP(L'ଊ', LSHIFT(Key_T)) \ + OP(L'ଋ', LSHIFT(Key_Equals)) \ + OP(L'ଏ', LSHIFT(Key_S)) \ + OP(L'ଐ', LSHIFT(Key_W)) \ + OP(L'ଓ', LSHIFT(Key_A)) \ + OP(L'ଔ', LSHIFT(Key_Q)) \ + OP(L'କ', Key_K) \ + OP(L'ଖ', LSHIFT(Key_K)) \ + OP(L'ଗ', Key_I) \ + OP(L'ଘ', LSHIFT(Key_I)) \ + OP(L'ଙ', LSHIFT(Key_U)) \ + OP(L'ଚ', Key_Semicolon) \ + OP(L'ଛ', LSHIFT(Key_Semicolon)) \ + OP(L'ଜ', Key_P) \ + OP(L'ଝ', LSHIFT(Key_P)) \ + OP(L'ଞ', LSHIFT(Key_RightBracket)) \ + OP(L'ଟ', Key_Quote) \ + OP(L'ଠ', LSHIFT(Key_Quote)) \ + OP(L'ଡ', Key_LeftBracket) \ + OP(L'ଢ', LSHIFT(Key_LeftBracket)) \ + OP(L'ଣ', LSHIFT(Key_C)) \ + OP(L'ତ', Key_L) \ + OP(L'ଥ', LSHIFT(Key_L)) \ + OP(L'ଦ', Key_O) \ + OP(L'ଧ', LSHIFT(Key_O)) \ + OP(L'ନ', Key_V) \ + OP(L'ପ', Key_H) \ + OP(L'ଫ', LSHIFT(Key_H)) \ + OP(L'ବ', Key_Y) \ + OP(L'ଭ', LSHIFT(Key_Y)) \ + OP(L'ମ', Key_C) \ + OP(L'ଯ', Key_Slash) \ + OP(L'ର', Key_J) \ + OP(L'ଲ', Key_N) \ + OP(L'ଳ', LSHIFT(Key_N)) \ + OP(L'ଵ', Key_B) \ + OP(L'ଶ', LSHIFT(Key_M)) \ + OP(L'ଷ', LSHIFT(Key_Comma)) \ + OP(L'ସ', Key_M) \ + OP(L'ହ', Key_U) \ + OP(L'଼', Key_RightBracket) \ + OP(L'ା', Key_E) \ + OP(L'ି', Key_F) \ + OP(L'ୀ', Key_R) \ + OP(L'ୁ', Key_G) \ + OP(L'ୂ', Key_T) \ + OP(L'ୃ', Key_Equals) \ + OP(L'େ', Key_S) \ + OP(L'ୈ', Key_W) \ + OP(L'ୋ', Key_A) \ + OP(L'ୌ', Key_Q) \ + OP(L'୍', Key_D) \ + OP(L'୦', Key_0) \ + OP(L'୧', Key_1) \ + OP(L'୨', Key_2) \ + OP(L'୩', Key_3) \ + OP(L'୪', Key_4) \ + OP(L'୫', Key_5) \ + OP(L'୬', Key_6) \ + OP(L'୭', Key_7) \ + OP(L'୮', Key_8) \ + OP(L'୯', Key_9) \ + OP(L'₹', RALT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_at, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace ori { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ori +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/san-kagapa/keymap.h b/src/kaleidoscope/host_keymap/linux/in/san-kagapa/keymap.h new file mode 100644 index 0000000000..2f0553e659 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/san-kagapa/keymap.h @@ -0,0 +1,393 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: san-kagapa + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ँ', RALT(LSHIFT(Key_8))) \ + OP(L'ं', LSHIFT(Key_M)) \ + OP(L'ः', LSHIFT(Key_H)) \ + OP(L'अ', RALT(Key_A)) \ + OP(L'आ', LSHIFT(Key_A)) \ + OP(L'इ', RALT(Key_I)) \ + OP(L'ई', RALT(LSHIFT(Key_I))) \ + OP(L'उ', RALT(Key_U)) \ + OP(L'ऊ', RALT(LSHIFT(Key_U))) \ + OP(L'ऋ', RALT(Key_R)) \ + OP(L'ऌ', RALT(LSHIFT(Key_L))) \ + OP(L'ऍ', RALT(LSHIFT(Key_Comma))) \ + OP(L'ऎ', RALT(Key_E)) \ + OP(L'ए', RALT(LSHIFT(Key_E))) \ + OP(L'ऐ', RALT(Key_Y)) \ + OP(L'ऑ', RALT(LSHIFT(Key_Period))) \ + OP(L'ऒ', RALT(Key_O)) \ + OP(L'ओ', RALT(LSHIFT(Key_O))) \ + OP(L'औ', RALT(Key_V)) \ + OP(L'क', Key_K) \ + OP(L'ख', LSHIFT(Key_K)) \ + OP(L'ग', Key_G) \ + OP(L'घ', LSHIFT(Key_G)) \ + OP(L'ङ', LSHIFT(Key_Z)) \ + OP(L'च', Key_C) \ + OP(L'छ', LSHIFT(Key_C)) \ + OP(L'ज', Key_J) \ + OP(L'झ', LSHIFT(Key_J)) \ + OP(L'ञ', Key_Z) \ + OP(L'ट', Key_Q) \ + OP(L'ठ', LSHIFT(Key_Q)) \ + OP(L'ड', Key_W) \ + OP(L'ढ', LSHIFT(Key_W)) \ + OP(L'ण', LSHIFT(Key_N)) \ + OP(L'त', Key_T) \ + OP(L'थ', LSHIFT(Key_T)) \ + OP(L'द', Key_D) \ + OP(L'ध', LSHIFT(Key_D)) \ + OP(L'न', Key_N) \ + OP(L'ऩ', RALT(Key_N)) \ + OP(L'प', Key_P) \ + OP(L'फ', LSHIFT(Key_P)) \ + OP(L'ब', Key_B) \ + OP(L'भ', LSHIFT(Key_B)) \ + OP(L'म', Key_M) \ + OP(L'य', Key_Y) \ + OP(L'र', Key_R) \ + OP(L'ऱ', RALT(LSHIFT(Key_R))) \ + OP(L'ल', Key_L) \ + OP(L'ळ', LSHIFT(Key_L)) \ + OP(L'ऴ', RALT(Key_X)) \ + OP(L'व', Key_V) \ + OP(L'श', LSHIFT(Key_S)) \ + OP(L'ष', Key_X) \ + OP(L'स', Key_S) \ + OP(L'ह', Key_H) \ + OP(L'़', LSHIFT(Key_X)) \ + OP(L'ऽ', RALT(Key_M)) \ + OP(L'ा', Key_A) \ + OP(L'ि', Key_I) \ + OP(L'ी', LSHIFT(Key_I)) \ + OP(L'ु', Key_U) \ + OP(L'ू', LSHIFT(Key_U)) \ + OP(L'ृ', LSHIFT(Key_R)) \ + OP(L'ॄ', LSHIFT(Key_F)) \ + OP(L'ॅ', RALT(Key_Comma)) \ + OP(L'ॆ', Key_E) \ + OP(L'े', LSHIFT(Key_E)) \ + OP(L'ै', LSHIFT(Key_Y)) \ + OP(L'ॉ', RALT(Key_Period)) \ + OP(L'ॊ', Key_O) \ + OP(L'ो', LSHIFT(Key_O)) \ + OP(L'ौ', LSHIFT(Key_V)) \ + OP(L'्', Key_F) \ + OP(L'ॐ', RALT(LSHIFT(Key_M))) \ + OP(L'॑', RALT(Key_Quote)) \ + OP(L'॒', RALT(Key_Minus)) \ + OP(L'क़', RALT(Key_K)) \ + OP(L'ख़', RALT(LSHIFT(Key_K))) \ + OP(L'ग़', RALT(Key_G)) \ + OP(L'ज़', RALT(Key_J)) \ + OP(L'ड़', RALT(Key_W)) \ + OP(L'ढ़', RALT(LSHIFT(Key_W))) \ + OP(L'फ़', RALT(Key_P)) \ + OP(L'य़', RALT(LSHIFT(Key_Y))) \ + OP(L'ॠ', RALT(Key_F)) \ + OP(L'ॢ', RALT(Key_L)) \ + OP(L'।', RALT(Key_NonUsPound)) \ + OP(L'॥', RALT(LSHIFT(Key_NonUsPound))) \ + OP(L'०', RALT(Key_0)) \ + OP(L'१', RALT(Key_1)) \ + OP(L'२', RALT(Key_2)) \ + OP(L'३', RALT(Key_3)) \ + OP(L'४', RALT(Key_4)) \ + OP(L'५', RALT(Key_5)) \ + OP(L'६', RALT(Key_6)) \ + OP(L'७', RALT(Key_7)) \ + OP(L'८', RALT(Key_8)) \ + OP(L'९', RALT(Key_9)) \ + OP(L'॰', RALT(LSHIFT(Key_0))) \ + OP(L'ॲ', RALT(LSHIFT(Key_A))) \ + OP(L'ᳲ', RALT(Key_Semicolon)) \ + OP(L'ᳳ', RALT(LSHIFT(Key_Semicolon))) \ + OP(L'ᳵ', RALT(Key_H)) \ + OP(L'ᳶ', RALT(LSHIFT(Key_H))) \ + OP(L'‌', RALT(LSHIFT(Key_6))) \ + OP(L'‍', RALT(LSHIFT(Key_7))) \ + OP(L'“', RALT(Key_Backtick)) \ + OP(L'”', RALT(LSHIFT(Key_Quote))) \ + OP(L'₨', RALT(LSHIFT(Key_2))) /* U+20a8, XKB_KEY_RupeeSign, RUPEE SIGN */ \ + OP(L'₹', RALT(LSHIFT(Key_4))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_RupeeSign, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace san_kagapa { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace san_kagapa +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/in/standard/keymap.h new file mode 100644 index 0000000000..be58b27b74 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/standard/keymap.h @@ -0,0 +1,362 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', RALT(LSHIFT(Key_1))) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', RALT(LSHIFT(Key_Slash))) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(LSHIFT(Key_2))) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', RALT(LSHIFT(Key_Minus))) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', RALT(LSHIFT(Key_1))) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', RALT(LSHIFT(Key_Slash))) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(LSHIFT(Key_2))) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', RALT(LSHIFT(Key_Minus))) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ँ', LSHIFT(Key_X)) \ + OP(L'ं', Key_X) \ + OP(L'ः', LSHIFT(Key_Minus)) \ + OP(L'अ', LSHIFT(Key_D)) \ + OP(L'आ', LSHIFT(Key_E)) \ + OP(L'इ', LSHIFT(Key_F)) \ + OP(L'ई', LSHIFT(Key_R)) \ + OP(L'उ', LSHIFT(Key_G)) \ + OP(L'ऊ', LSHIFT(Key_T)) \ + OP(L'ऋ', LSHIFT(Key_Equals)) \ + OP(L'ऌ', RALT(LSHIFT(Key_F))) \ + OP(L'ऍ', LSHIFT(Key_1)) \ + OP(L'ऎ', LSHIFT(Key_Z)) \ + OP(L'ए', LSHIFT(Key_S)) \ + OP(L'ऐ', LSHIFT(Key_W)) \ + OP(L'ऑ', LSHIFT(Key_NonUsPound)) \ + OP(L'ऒ', LSHIFT(Key_Backtick)) \ + OP(L'ओ', LSHIFT(Key_A)) \ + OP(L'औ', LSHIFT(Key_Q)) \ + OP(L'क', Key_K) \ + OP(L'ख', LSHIFT(Key_K)) \ + OP(L'ग', Key_I) \ + OP(L'घ', LSHIFT(Key_I)) \ + OP(L'ङ', LSHIFT(Key_U)) \ + OP(L'च', Key_Semicolon) \ + OP(L'छ', LSHIFT(Key_Semicolon)) \ + OP(L'ज', Key_P) \ + OP(L'झ', LSHIFT(Key_P)) \ + OP(L'ञ', LSHIFT(Key_RightBracket)) \ + OP(L'ट', Key_Quote) \ + OP(L'ठ', LSHIFT(Key_Quote)) \ + OP(L'ड', Key_LeftBracket) \ + OP(L'ढ', LSHIFT(Key_LeftBracket)) \ + OP(L'ण', LSHIFT(Key_C)) \ + OP(L'त', Key_L) \ + OP(L'थ', LSHIFT(Key_L)) \ + OP(L'द', Key_O) \ + OP(L'ध', LSHIFT(Key_O)) \ + OP(L'न', Key_V) \ + OP(L'ऩ', LSHIFT(Key_V)) \ + OP(L'प', Key_H) \ + OP(L'फ', LSHIFT(Key_H)) \ + OP(L'ब', Key_Y) \ + OP(L'भ', LSHIFT(Key_Y)) \ + OP(L'म', Key_C) \ + OP(L'य', Key_Slash) \ + OP(L'र', Key_J) \ + OP(L'ऱ', LSHIFT(Key_J)) \ + OP(L'ल', Key_N) \ + OP(L'ळ', LSHIFT(Key_N)) \ + OP(L'ऴ', LSHIFT(Key_B)) \ + OP(L'व', Key_B) \ + OP(L'श', LSHIFT(Key_M)) \ + OP(L'ष', LSHIFT(Key_Comma)) \ + OP(L'स', Key_M) \ + OP(L'ह', Key_U) \ + OP(L'़', Key_RightBracket) \ + OP(L'ऽ', RALT(LSHIFT(Key_Period))) \ + OP(L'ा', Key_E) \ + OP(L'ि', Key_F) \ + OP(L'ी', Key_R) \ + OP(L'ु', Key_G) \ + OP(L'ू', Key_T) \ + OP(L'ृ', Key_Equals) \ + OP(L'ॄ', RALT(Key_Equals)) \ + OP(L'ॅ', LSHIFT(Key_2)) \ + OP(L'ॆ', Key_Z) \ + OP(L'े', Key_S) \ + OP(L'ै', Key_W) \ + OP(L'ॉ', Key_NonUsPound) \ + OP(L'ॊ', Key_Backtick) \ + OP(L'ो', Key_A) \ + OP(L'ौ', Key_Q) \ + OP(L'्', Key_D) \ + OP(L'ॐ', RALT(LSHIFT(Key_X))) \ + OP(L'॑', RALT(LSHIFT(Key_Quote))) \ + OP(L'॒', RALT(Key_Semicolon)) \ + OP(L'॓', RALT(Key_Z)) \ + OP(L'॔', RALT(Key_C)) \ + OP(L'क़', RALT(Key_K)) \ + OP(L'ख़', RALT(LSHIFT(Key_K))) \ + OP(L'ग़', RALT(Key_I)) \ + OP(L'ज़', RALT(Key_P)) \ + OP(L'ड़', RALT(Key_LeftBracket)) \ + OP(L'ढ़', RALT(LSHIFT(Key_LeftBracket))) \ + OP(L'फ़', RALT(LSHIFT(Key_H))) \ + OP(L'य़', LSHIFT(Key_Slash)) \ + OP(L'ॠ', RALT(LSHIFT(Key_Equals))) \ + OP(L'ॡ', RALT(LSHIFT(Key_R))) \ + OP(L'ॢ', RALT(Key_F)) \ + OP(L'ॣ', RALT(Key_R)) \ + OP(L'।', LSHIFT(Key_Period)) \ + OP(L'॥', RALT(Key_Period)) \ + OP(L'०', Key_0) \ + OP(L'१', Key_1) \ + OP(L'२', Key_2) \ + OP(L'३', Key_3) \ + OP(L'४', Key_4) \ + OP(L'५', Key_5) \ + OP(L'६', Key_6) \ + OP(L'७', Key_7) \ + OP(L'८', Key_8) \ + OP(L'९', Key_9) \ + OP(L'॰', RALT(Key_Comma)) \ + OP(L'‌', RALT(Key_Spacebar)) \ + OP(L'‍', RALT(LSHIFT(Key_Spacebar))) \ + OP(L'₹', RALT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_0)) \ + OP(XKB_KEY_1, RALT(Key_1)) \ + OP(XKB_KEY_2, RALT(Key_2)) \ + OP(XKB_KEY_3, RALT(Key_3)) \ + OP(XKB_KEY_5, RALT(Key_5)) \ + OP(XKB_KEY_6, RALT(Key_6)) \ + OP(XKB_KEY_7, RALT(Key_7)) \ + OP(XKB_KEY_8, RALT(Key_8)) \ + OP(XKB_KEY_9, RALT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_exclam, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_question, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_slash, RALT(Key_Slash)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, RALT(LSHIFT(Key_Minus))) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/tam/keymap.h b/src/kaleidoscope/host_keymap/linux/in/tam/keymap.h new file mode 100644 index 0000000000..65e86314cf --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/tam/keymap.h @@ -0,0 +1,277 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: tam + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'।', LSHIFT(Key_Period)) \ + OP(L'ஂ', Key_X) \ + OP(L'ஃ', LSHIFT(Key_Minus)) \ + OP(L'அ', LSHIFT(Key_D)) \ + OP(L'ஆ', LSHIFT(Key_E)) \ + OP(L'இ', LSHIFT(Key_F)) \ + OP(L'ஈ', LSHIFT(Key_R)) \ + OP(L'உ', LSHIFT(Key_G)) \ + OP(L'ஊ', LSHIFT(Key_T)) \ + OP(L'எ', LSHIFT(Key_Z)) \ + OP(L'ஏ', LSHIFT(Key_S)) \ + OP(L'ஐ', LSHIFT(Key_W)) \ + OP(L'ஒ', LSHIFT(Key_Backtick)) \ + OP(L'ஓ', LSHIFT(Key_A)) \ + OP(L'ஔ', LSHIFT(Key_Q)) \ + OP(L'க', Key_K) \ + OP(L'ங', LSHIFT(Key_U)) \ + OP(L'ச', Key_Semicolon) \ + OP(L'ஜ', Key_P) \ + OP(L'ஞ', Key_RightBracket) \ + OP(L'ட', Key_Quote) \ + OP(L'ண', LSHIFT(Key_C)) \ + OP(L'த', Key_L) \ + OP(L'ந', Key_V) \ + OP(L'ன', LSHIFT(Key_V)) \ + OP(L'ப', Key_H) \ + OP(L'ம', Key_C) \ + OP(L'ய', Key_Slash) \ + OP(L'ர', Key_J) \ + OP(L'ற', LSHIFT(Key_J)) \ + OP(L'ல', Key_N) \ + OP(L'ள', LSHIFT(Key_N)) \ + OP(L'ழ', LSHIFT(Key_B)) \ + OP(L'வ', Key_B) \ + OP(L'ஶ', LSHIFT(Key_M)) \ + OP(L'ஷ', LSHIFT(Key_Comma)) \ + OP(L'ஸ', Key_M) \ + OP(L'ஹ', Key_U) \ + OP(L'ா', Key_E) \ + OP(L'ி', Key_F) \ + OP(L'ீ', Key_R) \ + OP(L'ு', Key_G) \ + OP(L'ூ', Key_T) \ + OP(L'ெ', Key_Z) \ + OP(L'ே', Key_S) \ + OP(L'ை', Key_W) \ + OP(L'ொ', Key_Backtick) \ + OP(L'ோ', Key_A) \ + OP(L'ௌ', Key_Q) \ + OP(L'்', Key_D) \ + OP(L'௧', Key_1) \ + OP(L'௨', Key_2) \ + OP(L'௩', Key_3) \ + OP(L'௪', Key_4) \ + OP(L'௫', Key_5) \ + OP(L'௬', Key_6) \ + OP(L'௭', Key_7) \ + OP(L'௮', Key_8) \ + OP(L'௯', Key_9) \ + OP(L'௰', Key_0) \ + OP(L'௱', Key_Minus) \ + OP(L'௲', Key_Equals) \ + OP(L'₹', RALT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace tam { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace tam +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/tam_TAB/keymap.h b/src/kaleidoscope/host_keymap/linux/in/tam_TAB/keymap.h new file mode 100644 index 0000000000..c9eaf1daf7 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/tam_TAB/keymap.h @@ -0,0 +1,265 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: tam_TAB + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', Key_H) \ + OP(L'£', LSHIFT(Key_H)) \ + OP(L'¤', Key_P) \ + OP(L'¦', LSHIFT(Key_P)) \ + OP(L'§', LSHIFT(Key_1)) \ + OP(L'¨', LSHIFT(Key_2)) \ + OP(L'ª', Key_B) \ + OP(L'«', LSHIFT(Key_B)) \ + OP(L'¬', Key_I) \ + OP(L'®', Key_O) \ + OP(L'¯', LSHIFT(Key_O)) \ + OP(L'°', LSHIFT(Key_F)) \ + OP(L'±', LSHIFT(Key_Quote)) \ + OP(L'²', LSHIFT(Key_R)) \ + OP(L'³', LSHIFT(Key_Q)) \ + OP(L'´', LSHIFT(Key_L)) \ + OP(L'µ', LSHIFT(Key_Z)) \ + OP(L'¶', LSHIFT(Key_J)) \ + OP(L'¸', LSHIFT(Key_E)) \ + OP(L'¹', LSHIFT(Key_G)) \ + OP(L'º', LSHIFT(Key_K)) \ + OP(L'»', LSHIFT(Key_A)) \ + OP(L'¼', LSHIFT(Key_U)) \ + OP(L'½', LSHIFT(Key_Y)) \ + OP(L'¾', LSHIFT(Key_T)) \ + OP(L'¿', LSHIFT(Key_Semicolon)) \ + OP(L'À', LSHIFT(Key_S)) \ + OP(L'Á', LSHIFT(Key_W)) \ + OP(L'Â', LSHIFT(Key_D)) \ + OP(L'Ü', Key_M) \ + OP(L'Ý', LSHIFT(Key_M)) \ + OP(L'Þ', Key_Comma) \ + OP(L'ß', LSHIFT(Key_Comma)) \ + OP(L'à', Key_C) \ + OP(L'á', LSHIFT(Key_C)) \ + OP(L'â', Key_V) \ + OP(L'ã', LSHIFT(Key_V)) \ + OP(L'ä', LSHIFT(Key_I)) \ + OP(L'å', Key_X) \ + OP(L'æ', LSHIFT(Key_X)) \ + OP(L'ç', Key_1) \ + OP(L'è', Key_F) \ + OP(L'é', Key_Quote) \ + OP(L'ê', Key_R) \ + OP(L'ë', Key_Q) \ + OP(L'ì', Key_L) \ + OP(L'í', Key_Z) \ + OP(L'î', Key_J) \ + OP(L'ï', Key_E) \ + OP(L'ð', Key_G) \ + OP(L'ñ', Key_K) \ + OP(L'ò', Key_A) \ + OP(L'ó', Key_U) \ + OP(L'ô', Key_Y) \ + OP(L'õ', Key_T) \ + OP(L'ö', Key_Semicolon) \ + OP(L'÷', Key_S) \ + OP(L'ø', Key_W) \ + OP(L'ù', Key_D) \ + OP(L'ú', Key_2) \ + OP(L'û', Key_3) \ + OP(L'ü', Key_4) \ + OP(L'ý', Key_5) \ + OP(L'þ', Key_6) \ + OP(L'ÿ', Key_7) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace tam_TAB { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace tam_TAB +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/tam_TSCII/keymap.h b/src/kaleidoscope/host_keymap/linux/in/tam_TSCII/keymap.h new file mode 100644 index 0000000000..1210fc4995 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/tam_TSCII/keymap.h @@ -0,0 +1,272 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: tam_TSCII + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'‚', Key_2) \ + OP(L'ƒ', Key_3) \ + OP(L'„', Key_4) \ + OP(L'…', Key_5) \ + OP(L'†', Key_6) \ + OP(L'‡', Key_7) \ + OP(L'ˆ', LSHIFT(Key_3)) \ + OP(L'‰', LSHIFT(Key_4)) \ + OP(L'Š', LSHIFT(Key_5)) \ + OP(L'‹', LSHIFT(Key_6)) \ + OP(L'Œ', LSHIFT(Key_7)) \ + OP(L'™', LSHIFT(Key_Quote)) \ + OP(L'š', LSHIFT(Key_Q)) \ + OP(L'¡', LSHIFT(Key_H)) \ + OP(L'¢', Key_P) \ + OP(L'£', LSHIFT(Key_P)) \ + OP(L'¤', LSHIFT(Key_1)) \ + OP(L'¥', LSHIFT(Key_2)) \ + OP(L'¦', Key_B) \ + OP(L'§', LSHIFT(Key_B)) \ + OP(L'¨', Key_I) \ + OP(L'ª', LSHIFT(Key_N)) \ + OP(L'«', Key_M) \ + OP(L'¬', LSHIFT(Key_M)) \ + OP(L'®', LSHIFT(Key_Comma)) \ + OP(L'¯', Key_C) \ + OP(L'°', LSHIFT(Key_C)) \ + OP(L'±', Key_V) \ + OP(L'²', LSHIFT(Key_V)) \ + OP(L'³', LSHIFT(Key_I)) \ + OP(L'´', Key_X) \ + OP(L'µ', LSHIFT(Key_X)) \ + OP(L'¶', Key_N) \ + OP(L'·', Key_1) \ + OP(L'¸', Key_F) \ + OP(L'¹', Key_Quote) \ + OP(L'º', Key_R) \ + OP(L'»', Key_Q) \ + OP(L'¼', Key_L) \ + OP(L'½', Key_Z) \ + OP(L'¾', Key_J) \ + OP(L'¿', Key_E) \ + OP(L'À', Key_G) \ + OP(L'Á', Key_K) \ + OP(L'Â', Key_A) \ + OP(L'Ã', Key_U) \ + OP(L'Ä', Key_Y) \ + OP(L'Å', Key_T) \ + OP(L'Æ', Key_Semicolon) \ + OP(L'Ç', Key_S) \ + OP(L'È', Key_W) \ + OP(L'É', Key_D) \ + OP(L'Ê', Key_O) \ + OP(L'Ë', LSHIFT(Key_O)) \ + OP(L'Ì', LSHIFT(Key_F)) \ + OP(L'Í', LSHIFT(Key_R)) \ + OP(L'Î', LSHIFT(Key_L)) \ + OP(L'Ï', LSHIFT(Key_Z)) \ + OP(L'Ð', LSHIFT(Key_J)) \ + OP(L'Ñ', LSHIFT(Key_E)) \ + OP(L'Ò', LSHIFT(Key_G)) \ + OP(L'Ó', LSHIFT(Key_K)) \ + OP(L'Ô', LSHIFT(Key_A)) \ + OP(L'Õ', LSHIFT(Key_U)) \ + OP(L'Ö', LSHIFT(Key_Y)) \ + OP(L'×', LSHIFT(Key_T)) \ + OP(L'Ø', LSHIFT(Key_Semicolon)) \ + OP(L'Ù', LSHIFT(Key_S)) \ + OP(L'Ú', LSHIFT(Key_W)) \ + OP(L'Û', LSHIFT(Key_D)) \ + OP(L'þ', Key_Comma) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_dead_acute, Key_LeftBracket) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_grave, Key_H) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace tam_TSCII { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace tam_TSCII +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/tam_keyboard_with_numerals/keymap.h b/src/kaleidoscope/host_keymap/linux/in/tam_keyboard_with_numerals/keymap.h new file mode 100644 index 0000000000..25380ee21f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/tam_keyboard_with_numerals/keymap.h @@ -0,0 +1,297 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: tam_keyboard_with_numerals + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'ஃ', LSHIFT(Key_Semicolon)) \ + OP(L'அ', Key_M) \ + OP(L'ஆ', LSHIFT(Key_M)) \ + OP(L'இ', Key_Comma) \ + OP(L'ஈ', LSHIFT(Key_Comma)) \ + OP(L'உ', Key_C) \ + OP(L'ஊ', LSHIFT(Key_C)) \ + OP(L'எ', Key_V) \ + OP(L'ஏ', LSHIFT(Key_V)) \ + OP(L'ஐ', LSHIFT(Key_I)) \ + OP(L'ஒ', Key_X) \ + OP(L'ஓ', LSHIFT(Key_X)) \ + OP(L'ஔ', Key_N) \ + OP(L'க', Key_F) \ + OP(L'ங', Key_Quote) \ + OP(L'ச', Key_R) \ + OP(L'ஜ', LSHIFT(Key_T)) \ + OP(L'ஞ', Key_Q) \ + OP(L'ட', Key_L) \ + OP(L'ண', Key_Z) \ + OP(L'த', Key_J) \ + OP(L'ந', Key_E) \ + OP(L'ன', Key_D) \ + OP(L'ப', Key_G) \ + OP(L'ம', Key_K) \ + OP(L'ய', Key_A) \ + OP(L'ர', Key_U) \ + OP(L'ற', Key_W) \ + OP(L'ல', Key_Y) \ + OP(L'ள', Key_S) \ + OP(L'ழ', LSHIFT(Key_H)) \ + OP(L'வ', Key_T) \ + OP(L'ஶ', LSHIFT(Key_Q)) \ + OP(L'ஷ', LSHIFT(Key_W)) \ + OP(L'ஸ', LSHIFT(Key_E)) \ + OP(L'ஹ', LSHIFT(Key_R)) \ + OP(L'ா', Key_H) \ + OP(L'ி', Key_P) \ + OP(L'ீ', LSHIFT(Key_P)) \ + OP(L'ு', Key_LeftBracket) \ + OP(L'ூ', LSHIFT(Key_LeftBracket)) \ + OP(L'ெ', Key_B) \ + OP(L'ே', LSHIFT(Key_B)) \ + OP(L'ை', Key_I) \ + OP(L'ொ', Key_O) \ + OP(L'ோ', LSHIFT(Key_O)) \ + OP(L'ௌ', LSHIFT(Key_N)) \ + OP(L'்', Key_Semicolon) \ + OP(L'௦', Key_0) \ + OP(L'௧', Key_1) \ + OP(L'௨', Key_2) \ + OP(L'௩', Key_3) \ + OP(L'௪', Key_4) \ + OP(L'௫', Key_5) \ + OP(L'௬', Key_6) \ + OP(L'௭', Key_7) \ + OP(L'௮', Key_8) \ + OP(L'௯', Key_9) \ + OP(L'௹', LSHIFT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Backtick) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace tam_keyboard_with_numerals { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace tam_keyboard_with_numerals +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/tam_unicode/keymap.h b/src/kaleidoscope/host_keymap/linux/in/tam_unicode/keymap.h new file mode 100644 index 0000000000..35ae742729 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/tam_unicode/keymap.h @@ -0,0 +1,297 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: tam_unicode + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'ஃ', LSHIFT(Key_Semicolon)) \ + OP(L'அ', Key_M) \ + OP(L'ஆ', LSHIFT(Key_M)) \ + OP(L'இ', Key_Comma) \ + OP(L'ஈ', LSHIFT(Key_Comma)) \ + OP(L'உ', Key_C) \ + OP(L'ஊ', LSHIFT(Key_C)) \ + OP(L'எ', Key_V) \ + OP(L'ஏ', LSHIFT(Key_V)) \ + OP(L'ஐ', LSHIFT(Key_I)) \ + OP(L'ஒ', Key_X) \ + OP(L'ஓ', LSHIFT(Key_X)) \ + OP(L'ஔ', Key_N) \ + OP(L'க', Key_F) \ + OP(L'ங', Key_Quote) \ + OP(L'ச', Key_R) \ + OP(L'ஜ', LSHIFT(Key_T)) \ + OP(L'ஞ', Key_Q) \ + OP(L'ட', Key_L) \ + OP(L'ண', Key_Z) \ + OP(L'த', Key_J) \ + OP(L'ந', Key_E) \ + OP(L'ன', Key_D) \ + OP(L'ப', Key_G) \ + OP(L'ம', Key_K) \ + OP(L'ய', Key_A) \ + OP(L'ர', Key_U) \ + OP(L'ற', Key_W) \ + OP(L'ல', Key_Y) \ + OP(L'ள', Key_S) \ + OP(L'ழ', LSHIFT(Key_H)) \ + OP(L'வ', Key_T) \ + OP(L'ஶ', LSHIFT(Key_Q)) \ + OP(L'ஷ', LSHIFT(Key_W)) \ + OP(L'ஸ', LSHIFT(Key_E)) \ + OP(L'ஹ', LSHIFT(Key_R)) \ + OP(L'ா', Key_H) \ + OP(L'ி', Key_P) \ + OP(L'ீ', LSHIFT(Key_P)) \ + OP(L'ு', Key_LeftBracket) \ + OP(L'ூ', LSHIFT(Key_LeftBracket)) \ + OP(L'ெ', Key_B) \ + OP(L'ே', LSHIFT(Key_B)) \ + OP(L'ை', Key_I) \ + OP(L'ொ', Key_O) \ + OP(L'ோ', LSHIFT(Key_O)) \ + OP(L'ௌ', LSHIFT(Key_N)) \ + OP(L'்', Key_Semicolon) \ + OP(L'௹', LSHIFT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Backtick) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace tam_unicode { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace tam_unicode +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/tel-kagapa/keymap.h b/src/kaleidoscope/host_keymap/linux/in/tel-kagapa/keymap.h new file mode 100644 index 0000000000..2d0e853410 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/tel-kagapa/keymap.h @@ -0,0 +1,374 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: tel-kagapa + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ॐ', RALT(LSHIFT(Key_M))) \ + OP(L'॑', RALT(Key_Quote)) \ + OP(L'॒', RALT(Key_Minus)) \ + OP(L'।', RALT(Key_NonUsPound)) \ + OP(L'॥', RALT(LSHIFT(Key_NonUsPound))) \ + OP(L'ఁ', RALT(LSHIFT(Key_8))) \ + OP(L'ం', LSHIFT(Key_M)) \ + OP(L'ః', LSHIFT(Key_H)) \ + OP(L'అ', RALT(Key_A)) \ + OP(L'ఆ', LSHIFT(Key_A)) \ + OP(L'ఇ', RALT(Key_I)) \ + OP(L'ఈ', RALT(LSHIFT(Key_I))) \ + OP(L'ఉ', RALT(Key_U)) \ + OP(L'ఊ', RALT(LSHIFT(Key_U))) \ + OP(L'ఋ', RALT(Key_R)) \ + OP(L'ఌ', RALT(LSHIFT(Key_L))) \ + OP(L'ఎ', RALT(Key_E)) \ + OP(L'ఏ', RALT(LSHIFT(Key_E))) \ + OP(L'ఐ', RALT(Key_Y)) \ + OP(L'ఒ', RALT(Key_O)) \ + OP(L'ఓ', RALT(LSHIFT(Key_O))) \ + OP(L'ఔ', RALT(Key_V)) \ + OP(L'క', Key_K) \ + OP(L'ఖ', LSHIFT(Key_K)) \ + OP(L'గ', Key_G) \ + OP(L'ఘ', LSHIFT(Key_G)) \ + OP(L'ఙ', LSHIFT(Key_Z)) \ + OP(L'చ', Key_C) \ + OP(L'ఛ', LSHIFT(Key_C)) \ + OP(L'జ', Key_J) \ + OP(L'ఝ', LSHIFT(Key_J)) \ + OP(L'ఞ', Key_Z) \ + OP(L'ట', Key_Q) \ + OP(L'ఠ', LSHIFT(Key_Q)) \ + OP(L'డ', Key_W) \ + OP(L'ఢ', LSHIFT(Key_W)) \ + OP(L'ణ', LSHIFT(Key_N)) \ + OP(L'త', Key_T) \ + OP(L'థ', LSHIFT(Key_T)) \ + OP(L'ద', Key_D) \ + OP(L'ధ', LSHIFT(Key_D)) \ + OP(L'న', Key_N) \ + OP(L'ప', Key_P) \ + OP(L'ఫ', LSHIFT(Key_P)) \ + OP(L'బ', Key_B) \ + OP(L'భ', LSHIFT(Key_B)) \ + OP(L'మ', Key_M) \ + OP(L'య', Key_Y) \ + OP(L'ర', Key_R) \ + OP(L'ఱ', RALT(LSHIFT(Key_R))) \ + OP(L'ల', Key_L) \ + OP(L'ళ', LSHIFT(Key_L)) \ + OP(L'వ', Key_V) \ + OP(L'శ', LSHIFT(Key_S)) \ + OP(L'ష', Key_X) \ + OP(L'స', Key_S) \ + OP(L'హ', Key_H) \ + OP(L'ఽ', RALT(Key_M)) \ + OP(L'ా', Key_A) \ + OP(L'ి', Key_I) \ + OP(L'ీ', LSHIFT(Key_I)) \ + OP(L'ు', Key_U) \ + OP(L'ూ', LSHIFT(Key_U)) \ + OP(L'ృ', LSHIFT(Key_R)) \ + OP(L'ౄ', LSHIFT(Key_F)) \ + OP(L'ె', Key_E) \ + OP(L'ే', LSHIFT(Key_E)) \ + OP(L'ై', LSHIFT(Key_Y)) \ + OP(L'ొ', Key_O) \ + OP(L'ో', LSHIFT(Key_O)) \ + OP(L'ౌ', LSHIFT(Key_V)) \ + OP(L'్', Key_F) \ + OP(L'ౘ', RALT(Key_Comma)) \ + OP(L'ౙ', RALT(Key_Period)) \ + OP(L'ౠ', RALT(Key_F)) \ + OP(L'ౢ', RALT(Key_L)) \ + OP(L'౦', RALT(Key_0)) \ + OP(L'౧', RALT(Key_1)) \ + OP(L'౨', RALT(Key_2)) \ + OP(L'౩', RALT(Key_3)) \ + OP(L'౪', RALT(Key_4)) \ + OP(L'౫', RALT(Key_5)) \ + OP(L'౬', RALT(Key_6)) \ + OP(L'౭', RALT(Key_7)) \ + OP(L'౮', RALT(Key_8)) \ + OP(L'౯', RALT(Key_9)) \ + OP(L'‌', RALT(LSHIFT(Key_6))) \ + OP(L'‍', RALT(LSHIFT(Key_7))) \ + OP(L'“', RALT(Key_Backtick)) \ + OP(L'”', RALT(LSHIFT(Key_Quote))) \ + OP(L'₨', RALT(LSHIFT(Key_2))) /* U+20a8, XKB_KEY_RupeeSign, RUPEE SIGN */ \ + OP(L'₹', RALT(LSHIFT(Key_4))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_RupeeSign, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace tel_kagapa { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace tel_kagapa +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/tel-sarala/keymap.h b/src/kaleidoscope/host_keymap/linux/in/tel-sarala/keymap.h new file mode 100644 index 0000000000..9b226851d2 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/tel-sarala/keymap.h @@ -0,0 +1,366 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: tel-sarala + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* XKB_KEY_KP_0 */ \ + OP('1', Key_1) /* XKB_KEY_KP_1 */ \ + OP('2', Key_2) /* XKB_KEY_KP_2 */ \ + OP('3', Key_3) /* XKB_KEY_KP_3 */ \ + OP('4', Key_4) /* XKB_KEY_KP_4 */ \ + OP('5', Key_5) /* XKB_KEY_KP_5 */ \ + OP('6', Key_6) /* XKB_KEY_KP_6 */ \ + OP('7', Key_7) /* XKB_KEY_KP_7 */ \ + OP('8', Key_8) /* XKB_KEY_KP_8 */ \ + OP('9', Key_9) /* XKB_KEY_KP_9 */ \ + OP(':', RALT(LSHIFT(Key_Semicolon))) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* XKB_KEY_KP_Equal, Equals */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_rightcaret, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underbar, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* XKB_KEY_KP_0 */ \ + OP(L'1', Key_1) /* XKB_KEY_KP_1 */ \ + OP(L'2', Key_2) /* XKB_KEY_KP_2 */ \ + OP(L'3', Key_3) /* XKB_KEY_KP_3 */ \ + OP(L'4', Key_4) /* XKB_KEY_KP_4 */ \ + OP(L'5', Key_5) /* XKB_KEY_KP_5 */ \ + OP(L'6', Key_6) /* XKB_KEY_KP_6 */ \ + OP(L'7', Key_7) /* XKB_KEY_KP_7 */ \ + OP(L'8', Key_8) /* XKB_KEY_KP_8 */ \ + OP(L'9', Key_9) /* XKB_KEY_KP_9 */ \ + OP(L':', RALT(LSHIFT(Key_Semicolon))) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* XKB_KEY_KP_Equal, Equals */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_rightcaret, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underbar, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'।', RALT(Key_NonUsPound)) \ + OP(L'॥', RALT(LSHIFT(Key_NonUsPound))) \ + OP(L'ఁ', LSHIFT(Key_M)) \ + OP(L'ం', Key_S) \ + OP(L'ః', LSHIFT(Key_S)) \ + OP(L'అ', LSHIFT(Key_F)) \ + OP(L'ఆ', LSHIFT(Key_J)) \ + OP(L'ఇ', LSHIFT(Key_I)) \ + OP(L'ఈ', LSHIFT(Key_Y)) \ + OP(L'ఉ', LSHIFT(Key_U)) \ + OP(L'ఊ', LSHIFT(Key_X)) \ + OP(L'ఋ', LSHIFT(Key_Backtick)) \ + OP(L'ఌ', RALT(Key_L)) \ + OP(L'ఎ', LSHIFT(Key_Q)) \ + OP(L'ఏ', LSHIFT(Key_E)) \ + OP(L'ఐ', LSHIFT(Key_RightBracket)) \ + OP(L'ఒ', LSHIFT(Key_Z)) \ + OP(L'ఓ', LSHIFT(Key_O)) \ + OP(L'ఔ', LSHIFT(Key_NonUsPound)) \ + OP(L'క', Key_K) \ + OP(L'ఖ', LSHIFT(Key_K)) \ + OP(L'గ', Key_G) \ + OP(L'ఘ', LSHIFT(Key_G)) \ + OP(L'ఙ', LSHIFT(Key_Period)) \ + OP(L'చ', Key_H) \ + OP(L'ఛ', LSHIFT(Key_H)) \ + OP(L'జ', Key_LeftBracket) \ + OP(L'ఝ', LSHIFT(Key_LeftBracket)) \ + OP(L'ఞ', LSHIFT(Key_Comma)) \ + OP(L'ట', Key_Semicolon) \ + OP(L'ఠ', LSHIFT(Key_Semicolon)) \ + OP(L'డ', Key_C) \ + OP(L'ఢ', LSHIFT(Key_C)) \ + OP(L'ణ', LSHIFT(Key_N)) \ + OP(L'త', Key_T) \ + OP(L'థ', LSHIFT(Key_T)) \ + OP(L'ద', Key_D) \ + OP(L'ధ', LSHIFT(Key_D)) \ + OP(L'న', Key_N) \ + OP(L'ప', Key_P) \ + OP(L'ఫ', LSHIFT(Key_P)) \ + OP(L'బ', Key_B) \ + OP(L'భ', LSHIFT(Key_B)) \ + OP(L'మ', Key_M) \ + OP(L'య', Key_A) \ + OP(L'ర', Key_R) \ + OP(L'ఱ', LSHIFT(Key_R)) \ + OP(L'ల', Key_L) \ + OP(L'ళ', LSHIFT(Key_L)) \ + OP(L'ఴ', RALT(LSHIFT(Key_Q))) \ + OP(L'వ', Key_V) \ + OP(L'శ', Key_Slash) \ + OP(L'ష', LSHIFT(Key_W)) \ + OP(L'స', Key_W) \ + OP(L'హ', LSHIFT(Key_V)) \ + OP(L'ఽ', LSHIFT(Key_A)) \ + OP(L'ా', Key_J) \ + OP(L'ి', Key_I) \ + OP(L'ీ', Key_Y) \ + OP(L'ు', Key_U) \ + OP(L'ూ', Key_X) \ + OP(L'ృ', Key_Backtick) \ + OP(L'ౄ', RALT(Key_Q)) \ + OP(L'ె', Key_Q) \ + OP(L'ే', Key_E) \ + OP(L'ై', Key_RightBracket) \ + OP(L'ొ', Key_Z) \ + OP(L'ో', Key_O) \ + OP(L'ౌ', Key_NonUsPound) \ + OP(L'్', Key_F) \ + OP(L'ౕ', RALT(LSHIFT(Key_0))) \ + OP(L'ౖ', RALT(LSHIFT(Key_Minus))) \ + OP(L'ౘ', RALT(Key_H)) \ + OP(L'ౙ', RALT(LSHIFT(Key_H))) \ + OP(L'ౠ', RALT(LSHIFT(Key_R))) \ + OP(L'ౡ', RALT(LSHIFT(Key_L))) \ + OP(L'ౢ', RALT(Key_K)) \ + OP(L'ౣ', RALT(LSHIFT(Key_K))) \ + OP(L'౦', RALT(Key_0)) \ + OP(L'౧', RALT(Key_1)) \ + OP(L'౨', RALT(Key_2)) \ + OP(L'౩', RALT(Key_3)) \ + OP(L'౪', RALT(Key_4)) \ + OP(L'౫', RALT(Key_5)) \ + OP(L'౬', RALT(Key_6)) \ + OP(L'౭', RALT(Key_7)) \ + OP(L'౮', RALT(Key_8)) \ + OP(L'౯', RALT(Key_9)) \ + OP(L'౸', RALT(LSHIFT(Key_1))) \ + OP(L'౹', RALT(LSHIFT(Key_2))) \ + OP(L'౺', RALT(LSHIFT(Key_3))) \ + OP(L'౻', RALT(LSHIFT(Key_4))) \ + OP(L'౼', RALT(LSHIFT(Key_5))) \ + OP(L'౽', RALT(LSHIFT(Key_6))) \ + OP(L'౾', RALT(LSHIFT(Key_7))) \ + OP(L'౿', RALT(LSHIFT(Key_8))) \ + OP(L'₹', RALT(LSHIFT(Key_9))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, Key_0) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, Key_1) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, Key_2) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, Key_3) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, Key_4) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, Key_5) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, Key_6) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, Key_7) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, Key_8) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, Key_9) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Equal, Key_Equals) /* XKB_KEY_KP_Equal, Equals */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_Minus) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_braceright, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_leftcaret, RALT(Key_Comma)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_rightcaret, RALT(Key_Period)) \ + OP(XKB_KEY_semicolon, RALT(Key_Semicolon)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underbar, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace tel_sarala { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace tel_sarala +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/tel/keymap.h b/src/kaleidoscope/host_keymap/linux/in/tel/keymap.h new file mode 100644 index 0000000000..7849152a65 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/tel/keymap.h @@ -0,0 +1,307 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: tel + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('@', LSHIFT(Key_Slash)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'@', LSHIFT(Key_Slash)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ఁ', LSHIFT(Key_X)) \ + OP(L'ం', Key_X) \ + OP(L'ః', Key_Minus) \ + OP(L'అ', LSHIFT(Key_D)) \ + OP(L'ఆ', LSHIFT(Key_E)) \ + OP(L'ఇ', LSHIFT(Key_F)) \ + OP(L'ఈ', LSHIFT(Key_R)) \ + OP(L'ఉ', LSHIFT(Key_G)) \ + OP(L'ఊ', LSHIFT(Key_T)) \ + OP(L'ఋ', LSHIFT(Key_Equals)) \ + OP(L'ఎ', LSHIFT(Key_Z)) \ + OP(L'ఏ', LSHIFT(Key_S)) \ + OP(L'ఐ', LSHIFT(Key_W)) \ + OP(L'ఒ', LSHIFT(Key_Backtick)) \ + OP(L'ఓ', LSHIFT(Key_A)) \ + OP(L'ఔ', LSHIFT(Key_Q)) \ + OP(L'క', Key_K) \ + OP(L'ఖ', LSHIFT(Key_K)) \ + OP(L'గ', Key_I) \ + OP(L'ఘ', LSHIFT(Key_I)) \ + OP(L'ఙ', LSHIFT(Key_U)) \ + OP(L'చ', Key_Semicolon) \ + OP(L'ఛ', LSHIFT(Key_Semicolon)) \ + OP(L'జ', Key_P) \ + OP(L'ఝ', LSHIFT(Key_P)) \ + OP(L'ఞ', Key_RightBracket) \ + OP(L'ట', Key_Quote) \ + OP(L'ఠ', LSHIFT(Key_Quote)) \ + OP(L'డ', Key_LeftBracket) \ + OP(L'ఢ', LSHIFT(Key_LeftBracket)) \ + OP(L'ణ', LSHIFT(Key_C)) \ + OP(L'త', Key_L) \ + OP(L'థ', LSHIFT(Key_L)) \ + OP(L'ద', Key_O) \ + OP(L'ధ', LSHIFT(Key_O)) \ + OP(L'న', Key_V) \ + OP(L'ప', Key_H) \ + OP(L'ఫ', LSHIFT(Key_H)) \ + OP(L'బ', Key_Y) \ + OP(L'భ', LSHIFT(Key_Y)) \ + OP(L'మ', Key_C) \ + OP(L'య', Key_Slash) \ + OP(L'ర', Key_J) \ + OP(L'ఱ', LSHIFT(Key_J)) \ + OP(L'ల', Key_N) \ + OP(L'ళ', LSHIFT(Key_N)) \ + OP(L'వ', Key_B) \ + OP(L'శ', LSHIFT(Key_M)) \ + OP(L'ష', LSHIFT(Key_Comma)) \ + OP(L'స', Key_M) \ + OP(L'హ', Key_U) \ + OP(L'ా', Key_E) \ + OP(L'ి', Key_F) \ + OP(L'ీ', Key_R) \ + OP(L'ు', Key_G) \ + OP(L'ూ', Key_T) \ + OP(L'ృ', Key_Equals) \ + OP(L'ె', Key_Z) \ + OP(L'ే', Key_S) \ + OP(L'ై', Key_W) \ + OP(L'ొ', Key_Backtick) \ + OP(L'ో', Key_A) \ + OP(L'ౌ', Key_Q) \ + OP(L'్', Key_D) \ + OP(L'౦', Key_0) \ + OP(L'౧', Key_1) \ + OP(L'౨', Key_2) \ + OP(L'౩', Key_3) \ + OP(L'౪', Key_4) \ + OP(L'౫', Key_5) \ + OP(L'౬', Key_6) \ + OP(L'౭', Key_7) \ + OP(L'౮', Key_8) \ + OP(L'౯', Key_9) \ + OP(L'₹', RALT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace tel { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace tel +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/urd-phonetic/keymap.h b/src/kaleidoscope/host_keymap/linux/in/urd-phonetic/keymap.h new file mode 100644 index 0000000000..d91ae6936d --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/urd-phonetic/keymap.h @@ -0,0 +1,316 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: urd-phonetic + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) \ + OP('"', LSHIFT(Key_Quote)) \ + OP('#', LSHIFT(Key_3)) \ + OP('$', LSHIFT(Key_4)) \ + OP('%', LSHIFT(Key_5)) \ + OP('&', LSHIFT(Key_7)) \ + OP(''', Key_Quote) \ + OP('(', LSHIFT(Key_0)) \ + OP(')', LSHIFT(Key_9)) \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_Minus) \ + OP('.', LSHIFT(Key_B)) \ + OP('/', Key_Slash) \ + OP('0', Key_0) \ + OP('1', Key_1) \ + OP('2', Key_2) \ + OP('3', Key_3) \ + OP('4', Key_4) \ + OP('5', Key_5) \ + OP('6', Key_6) \ + OP('7', Key_7) \ + OP('8', Key_8) \ + OP('9', Key_9) \ + OP(':', LSHIFT(Key_Semicolon)) \ + OP('<', LSHIFT(Key_Comma)) \ + OP('=', Key_Equals) \ + OP('>', LSHIFT(Key_Period)) \ + OP('@', LSHIFT(Key_2)) \ + OP('[', Key_RightBracket) \ + OP('\', Key_NonUsPound) \ + OP(']', Key_LeftBracket) \ + OP('^', LSHIFT(Key_6)) \ + OP('_', LSHIFT(Key_Minus)) \ + OP('{', LSHIFT(Key_RightBracket)) \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_LeftBracket)) \ + OP('~', LSHIFT(Key_Backtick)) \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) \ + OP(L'"', LSHIFT(Key_Quote)) \ + OP(L'#', LSHIFT(Key_3)) \ + OP(L'$', LSHIFT(Key_4)) \ + OP(L'%', LSHIFT(Key_5)) \ + OP(L'&', LSHIFT(Key_7)) \ + OP(L''', Key_Quote) \ + OP(L'(', LSHIFT(Key_0)) \ + OP(L')', LSHIFT(Key_9)) \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_Minus) \ + OP(L'.', LSHIFT(Key_B)) \ + OP(L'/', Key_Slash) \ + OP(L'0', Key_0) \ + OP(L'1', Key_1) \ + OP(L'2', Key_2) \ + OP(L'3', Key_3) \ + OP(L'4', Key_4) \ + OP(L'5', Key_5) \ + OP(L'6', Key_6) \ + OP(L'7', Key_7) \ + OP(L'8', Key_8) \ + OP(L'9', Key_9) \ + OP(L':', LSHIFT(Key_Semicolon)) \ + OP(L'<', LSHIFT(Key_Comma)) \ + OP(L'=', Key_Equals) \ + OP(L'>', LSHIFT(Key_Period)) \ + OP(L'@', LSHIFT(Key_2)) \ + OP(L'[', Key_RightBracket) \ + OP(L'\', Key_NonUsPound) \ + OP(L']', Key_LeftBracket) \ + OP(L'^', LSHIFT(Key_6)) \ + OP(L'_', LSHIFT(Key_Minus)) \ + OP(L'{', LSHIFT(Key_RightBracket)) \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_LeftBracket)) \ + OP(L'~', LSHIFT(Key_Backtick)) \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'،', Key_Comma) \ + OP(L'؛', Key_Semicolon) \ + OP(L'؟', LSHIFT(Key_Slash)) \ + OP(L'ء', Key_U) \ + OP(L'آ', LSHIFT(Key_A)) \ + OP(L'ؤ', LSHIFT(Key_W)) \ + OP(L'ئ', LSHIFT(Key_U)) \ + OP(L'ا', Key_A) \ + OP(L'ب', Key_B) \ + OP(L'ت', Key_T) \ + OP(L'ث', LSHIFT(Key_C)) \ + OP(L'ج', Key_J) \ + OP(L'ح', Key_H) \ + OP(L'خ', LSHIFT(Key_K)) \ + OP(L'د', Key_D) \ + OP(L'ذ', LSHIFT(Key_Z)) \ + OP(L'ر', Key_R) \ + OP(L'ز', Key_Z) \ + OP(L'س', Key_S) \ + OP(L'ش', Key_X) \ + OP(L'ص', LSHIFT(Key_S)) \ + OP(L'ض', LSHIFT(Key_J)) \ + OP(L'ط', Key_V) \ + OP(L'ظ', LSHIFT(Key_V)) \ + OP(L'ع', Key_E) \ + OP(L'غ', LSHIFT(Key_G)) \ + OP(L'ف', Key_F) \ + OP(L'ق', Key_Q) \ + OP(L'ل', Key_L) \ + OP(L'م', Key_M) \ + OP(L'ن', Key_N) \ + OP(L'و', Key_W) \ + OP(L'ً', Key_Backtick) \ + OP(L'َ', LSHIFT(Key_Y)) \ + OP(L'ُ', LSHIFT(Key_P)) \ + OP(L'ِ', LSHIFT(Key_I)) \ + OP(L'ّ', LSHIFT(Key_F)) \ + OP(L'ْ', LSHIFT(Key_Q)) \ + OP(L'ٔ', LSHIFT(Key_L)) /* U+0654, XKB_KEY_Arabic_hamza_above, ARABIC HAMZA ABOVE */ \ + OP(L'٘', LSHIFT(Key_M)) \ + OP(L'ٰ', LSHIFT(Key_E)) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٹ', LSHIFT(Key_T)) /* U+0679, XKB_KEY_Arabic_tteh, ARABIC LETTER TTEH */ \ + OP(L'پ', Key_P) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', Key_C) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ڈ', LSHIFT(Key_D)) /* U+0688, XKB_KEY_Arabic_ddal, ARABIC LETTER DDAL */ \ + OP(L'ڑ', LSHIFT(Key_R)) /* U+0691, XKB_KEY_Arabic_rreh, ARABIC LETTER RREH */ \ + OP(L'ژ', LSHIFT(Key_X)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ک', Key_K) /* U+06a9, XKB_KEY_Arabic_keheh, ARABIC LETTER KEHEH */ \ + OP(L'گ', Key_G) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'ں', LSHIFT(Key_N)) /* U+06ba, XKB_KEY_Arabic_noon_ghunna, ARABIC LETTER NOON GHUNNA */ \ + OP(L'ھ', LSHIFT(Key_H)) /* U+06be, XKB_KEY_Arabic_heh_doachashmee, ARABIC LETTER HEH DOACHASHMEE */ \ + OP(L'ہ', Key_O) /* U+06c1, XKB_KEY_Arabic_heh_goal, ARABIC LETTER HEH GOAL */ \ + OP(L'ۃ', LSHIFT(Key_O)) \ + OP(L'ی', Key_I) /* U+06cc, XKB_KEY_Farsi_yeh, ARABIC LETTER FARSI YEH */ \ + OP(L'ے', Key_Y) /* U+06d2, XKB_KEY_Arabic_yeh_baree, ARABIC LETTER YEH BARREE */ \ + OP(L'۔', Key_Period) /* U+06d4, XKB_KEY_Arabic_fullstop, ARABIC FULL STOP */ \ + OP(L'‌', RALT(Key_W)) \ + OP(L'‍', RALT(Key_Q)) \ + OP(L'‎', RALT(Key_Z)) \ + OP(L'‏', RALT(Key_M)) \ + OP(L'‪', RALT(Key_X)) \ + OP(L'‫', RALT(Key_N)) \ + OP(L'‬', RALT(Key_V)) \ + OP(L'‭', RALT(Key_C)) \ + OP(L'‮', RALT(Key_B)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_ddal, LSHIFT(Key_D)) \ + OP(XKB_KEY_Arabic_fullstop, Key_Period) \ + OP(XKB_KEY_Arabic_gaf, Key_G) \ + OP(XKB_KEY_Arabic_hamza_above, LSHIFT(Key_L)) \ + OP(XKB_KEY_Arabic_heh_doachashmee, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_heh_goal, Key_O) \ + OP(XKB_KEY_Arabic_jeh, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_keheh, Key_K) \ + OP(XKB_KEY_Arabic_noon_ghunna, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_peh, Key_P) \ + OP(XKB_KEY_Arabic_rreh, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_superscript_alef, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_tcheh, Key_C) \ + OP(XKB_KEY_Arabic_tteh, LSHIFT(Key_T)) \ + OP(XKB_KEY_Arabic_yeh_baree, Key_Y) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Farsi_yeh, Key_I) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace urd_phonetic { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace urd_phonetic +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/urd-phonetic3/keymap.h b/src/kaleidoscope/host_keymap/linux/in/urd-phonetic3/keymap.h new file mode 100644 index 0000000000..58dbea23f8 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/urd-phonetic3/keymap.h @@ -0,0 +1,340 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: urd-phonetic3 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', RALT(Key_1)) \ + OP('"', LSHIFT(Key_Quote)) \ + OP('#', RALT(Key_3)) \ + OP('&', RALT(Key_7)) \ + OP(''', Key_Quote) \ + OP('(', RALT(Key_0)) \ + OP(')', RALT(Key_9)) \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_Minus) \ + OP('.', LSHIFT(Key_B)) \ + OP('/', Key_Slash) \ + OP('0', LSHIFT(Key_0)) \ + OP('1', LSHIFT(Key_1)) \ + OP('2', LSHIFT(Key_2)) \ + OP('3', LSHIFT(Key_3)) \ + OP('4', LSHIFT(Key_4)) \ + OP('5', LSHIFT(Key_5)) \ + OP('6', LSHIFT(Key_6)) \ + OP('7', LSHIFT(Key_7)) \ + OP('8', LSHIFT(Key_8)) \ + OP('9', LSHIFT(Key_9)) \ + OP(':', LSHIFT(Key_Semicolon)) \ + OP('<', RALT(Key_Comma)) \ + OP('=', Key_Equals) \ + OP('>', RALT(Key_Period)) \ + OP('@', RALT(Key_2)) \ + OP('[', Key_RightBracket) \ + OP('\', Key_NonUsPound) \ + OP(']', Key_LeftBracket) \ + OP('_', LSHIFT(Key_Minus)) \ + OP('{', LSHIFT(Key_RightBracket)) \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_LeftBracket)) \ + OP('~', Key_Backtick) \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', RALT(Key_1)) \ + OP(L'"', LSHIFT(Key_Quote)) \ + OP(L'#', RALT(Key_3)) \ + OP(L'&', RALT(Key_7)) \ + OP(L''', Key_Quote) \ + OP(L'(', RALT(Key_0)) \ + OP(L')', RALT(Key_9)) \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_Minus) \ + OP(L'.', LSHIFT(Key_B)) \ + OP(L'/', Key_Slash) \ + OP(L'0', LSHIFT(Key_0)) \ + OP(L'1', LSHIFT(Key_1)) \ + OP(L'2', LSHIFT(Key_2)) \ + OP(L'3', LSHIFT(Key_3)) \ + OP(L'4', LSHIFT(Key_4)) \ + OP(L'5', LSHIFT(Key_5)) \ + OP(L'6', LSHIFT(Key_6)) \ + OP(L'7', LSHIFT(Key_7)) \ + OP(L'8', LSHIFT(Key_8)) \ + OP(L'9', LSHIFT(Key_9)) \ + OP(L':', LSHIFT(Key_Semicolon)) \ + OP(L'<', RALT(Key_Comma)) \ + OP(L'=', Key_Equals) \ + OP(L'>', RALT(Key_Period)) \ + OP(L'@', RALT(Key_2)) \ + OP(L'[', Key_RightBracket) \ + OP(L'\', Key_NonUsPound) \ + OP(L']', Key_LeftBracket) \ + OP(L'_', LSHIFT(Key_Minus)) \ + OP(L'{', LSHIFT(Key_RightBracket)) \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_LeftBracket)) \ + OP(L'~', Key_Backtick) \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'؀', RALT(Key_N)) \ + OP(L'؁', RALT(Key_Y)) \ + OP(L'؂', RALT(Key_W)) \ + OP(L'؃', RALT(Key_C)) \ + OP(L'،', Key_Comma) \ + OP(L'؎', RALT(Key_X)) \ + OP(L'؏', RALT(Key_Z)) \ + OP(L'ؐ', RALT(Key_S)) \ + OP(L'ؑ', RALT(Key_I)) \ + OP(L'ؒ', RALT(Key_H)) \ + OP(L'ؓ', RALT(Key_R)) \ + OP(L'ؔ', RALT(Key_T)) \ + OP(L'؛', Key_Semicolon) \ + OP(L'؟', LSHIFT(Key_Slash)) \ + OP(L'ء', Key_U) \ + OP(L'آ', LSHIFT(Key_A)) \ + OP(L'ئ', LSHIFT(Key_U)) \ + OP(L'ا', Key_A) \ + OP(L'ب', Key_B) \ + OP(L'ت', Key_T) \ + OP(L'ث', LSHIFT(Key_C)) \ + OP(L'ج', Key_J) \ + OP(L'ح', Key_H) \ + OP(L'خ', LSHIFT(Key_K)) \ + OP(L'د', Key_D) \ + OP(L'ذ', LSHIFT(Key_Z)) \ + OP(L'ر', Key_R) \ + OP(L'ز', Key_Z) \ + OP(L'س', Key_S) \ + OP(L'ش', Key_X) \ + OP(L'ص', LSHIFT(Key_S)) \ + OP(L'ض', LSHIFT(Key_J)) \ + OP(L'ط', Key_V) \ + OP(L'ظ', LSHIFT(Key_V)) \ + OP(L'ع', Key_E) \ + OP(L'غ', LSHIFT(Key_G)) \ + OP(L'ف', Key_F) \ + OP(L'ق', Key_Q) \ + OP(L'ل', Key_L) \ + OP(L'م', Key_M) \ + OP(L'ن', Key_N) \ + OP(L'و', Key_W) \ + OP(L'ً', LSHIFT(Key_Backtick)) \ + OP(L'َ', LSHIFT(Key_Y)) \ + OP(L'ُ', LSHIFT(Key_P)) \ + OP(L'ِ', LSHIFT(Key_I)) \ + OP(L'ّ', LSHIFT(Key_W)) \ + OP(L'ْ', LSHIFT(Key_Q)) \ + OP(L'ٔ', RALT(Key_U)) /* U+0654, XKB_KEY_Arabic_hamza_above, ARABIC HAMZA ABOVE */ \ + OP(L'ٖ', RALT(Key_E)) \ + OP(L'ٗ', RALT(Key_P)) \ + OP(L'٘', LSHIFT(Key_M)) \ + OP(L'٪', RALT(Key_5)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', LSHIFT(Key_Period)) \ + OP(L'ٰ', LSHIFT(Key_E)) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٹ', LSHIFT(Key_T)) /* U+0679, XKB_KEY_Arabic_tteh, ARABIC LETTER TTEH */ \ + OP(L'پ', Key_P) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', Key_C) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ڈ', LSHIFT(Key_D)) /* U+0688, XKB_KEY_Arabic_ddal, ARABIC LETTER DDAL */ \ + OP(L'ڑ', LSHIFT(Key_R)) /* U+0691, XKB_KEY_Arabic_rreh, ARABIC LETTER RREH */ \ + OP(L'ژ', LSHIFT(Key_X)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ک', Key_K) /* U+06a9, XKB_KEY_Arabic_keheh, ARABIC LETTER KEHEH */ \ + OP(L'گ', Key_G) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'ں', LSHIFT(Key_N)) /* U+06ba, XKB_KEY_Arabic_noon_ghunna, ARABIC LETTER NOON GHUNNA */ \ + OP(L'ھ', LSHIFT(Key_H)) /* U+06be, XKB_KEY_Arabic_heh_doachashmee, ARABIC LETTER HEH DOACHASHMEE */ \ + OP(L'ہ', Key_O) /* U+06c1, XKB_KEY_Arabic_heh_goal, ARABIC LETTER HEH GOAL */ \ + OP(L'ۃ', LSHIFT(Key_O)) \ + OP(L'ی', Key_I) /* U+06cc, XKB_KEY_Farsi_yeh, ARABIC LETTER FARSI YEH */ \ + OP(L'ے', Key_Y) /* U+06d2, XKB_KEY_Arabic_yeh_baree, ARABIC LETTER YEH BARREE */ \ + OP(L'۔', Key_Period) /* U+06d4, XKB_KEY_Arabic_fullstop, ARABIC FULL STOP */ \ + OP(L'۰', Key_0) /* U+06f0, XKB_KEY_Farsi_0, EXTENDED ARABIC-INDIC DIGIT ZERO */ \ + OP(L'۱', Key_1) /* U+06f1, XKB_KEY_Farsi_1, EXTENDED ARABIC-INDIC DIGIT ONE */ \ + OP(L'۲', Key_2) /* U+06f2, XKB_KEY_Farsi_2, EXTENDED ARABIC-INDIC DIGIT TWO */ \ + OP(L'۳', Key_3) /* U+06f3, XKB_KEY_Farsi_3, EXTENDED ARABIC-INDIC DIGIT THREE */ \ + OP(L'۴', Key_4) /* U+06f4, XKB_KEY_Farsi_4, EXTENDED ARABIC-INDIC DIGIT FOUR */ \ + OP(L'۵', Key_5) /* U+06f5, XKB_KEY_Farsi_5, EXTENDED ARABIC-INDIC DIGIT FIVE */ \ + OP(L'۶', Key_6) /* U+06f6, XKB_KEY_Farsi_6, EXTENDED ARABIC-INDIC DIGIT SIX */ \ + OP(L'۷', Key_7) /* U+06f7, XKB_KEY_Farsi_7, EXTENDED ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'۸', Key_8) /* U+06f8, XKB_KEY_Farsi_8, EXTENDED ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'۹', Key_9) /* U+06f9, XKB_KEY_Farsi_9, EXTENDED ARABIC-INDIC DIGIT NINE */ \ + OP(L'ﷲ', RALT(Key_A)) \ + OP(L'ﷺ', RALT(Key_D)) \ + OP(L'ﷻ', RALT(Key_J)) \ + OP(L'﷽', RALT(Key_B)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_ddal, LSHIFT(Key_D)) \ + OP(XKB_KEY_Arabic_fullstop, Key_Period) \ + OP(XKB_KEY_Arabic_gaf, Key_G) \ + OP(XKB_KEY_Arabic_hamza_above, RALT(Key_U)) \ + OP(XKB_KEY_Arabic_heh_doachashmee, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_heh_goal, Key_O) \ + OP(XKB_KEY_Arabic_jeh, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_keheh, Key_K) \ + OP(XKB_KEY_Arabic_noon_ghunna, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_peh, Key_P) \ + OP(XKB_KEY_Arabic_percent, RALT(Key_5)) \ + OP(XKB_KEY_Arabic_rreh, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_superscript_alef, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_tcheh, Key_C) \ + OP(XKB_KEY_Arabic_tteh, LSHIFT(Key_T)) \ + OP(XKB_KEY_Arabic_yeh_baree, Key_Y) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Farsi_0, Key_0) \ + OP(XKB_KEY_Farsi_1, Key_1) \ + OP(XKB_KEY_Farsi_2, Key_2) \ + OP(XKB_KEY_Farsi_3, Key_3) \ + OP(XKB_KEY_Farsi_4, Key_4) \ + OP(XKB_KEY_Farsi_5, Key_5) \ + OP(XKB_KEY_Farsi_6, Key_6) \ + OP(XKB_KEY_Farsi_7, Key_7) \ + OP(XKB_KEY_Farsi_8, Key_8) \ + OP(XKB_KEY_Farsi_9, Key_9) \ + OP(XKB_KEY_Farsi_yeh, Key_I) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace urd_phonetic3 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace urd_phonetic3 +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/in/urd-winkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/in/urd-winkeys/keymap.h new file mode 100644 index 0000000000..bd83377a15 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/in/urd-winkeys/keymap.h @@ -0,0 +1,312 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: in +// variant: urd-winkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) \ + OP('"', LSHIFT(Key_Quote)) \ + OP('#', LSHIFT(Key_3)) \ + OP('$', LSHIFT(Key_4)) \ + OP(''', Key_Quote) \ + OP('(', LSHIFT(Key_0)) \ + OP(')', LSHIFT(Key_9)) \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_Minus) \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_Slash) \ + OP('0', Key_0) \ + OP('1', Key_1) \ + OP('2', Key_2) \ + OP('3', Key_3) \ + OP('4', Key_4) \ + OP('5', Key_5) \ + OP('6', Key_6) \ + OP('7', Key_7) \ + OP('8', Key_8) \ + OP('9', Key_9) \ + OP(':', LSHIFT(Key_Semicolon)) \ + OP('<', LSHIFT(Key_Period)) \ + OP('=', Key_Equals) \ + OP('>', LSHIFT(Key_Comma)) \ + OP('@', LSHIFT(Key_2)) \ + OP('[', Key_RightBracket) \ + OP('\', Key_NonUsPound) \ + OP(']', Key_LeftBracket) \ + OP('^', LSHIFT(Key_6)) \ + OP('_', LSHIFT(Key_Minus)) \ + OP('`', Key_Backtick) \ + OP('{', LSHIFT(Key_RightBracket)) \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_LeftBracket)) \ + OP('~', LSHIFT(Key_Backtick)) \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) \ + OP(L'"', LSHIFT(Key_Quote)) \ + OP(L'#', LSHIFT(Key_3)) \ + OP(L'$', LSHIFT(Key_4)) \ + OP(L''', Key_Quote) \ + OP(L'(', LSHIFT(Key_0)) \ + OP(L')', LSHIFT(Key_9)) \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_Minus) \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_Slash) \ + OP(L'0', Key_0) \ + OP(L'1', Key_1) \ + OP(L'2', Key_2) \ + OP(L'3', Key_3) \ + OP(L'4', Key_4) \ + OP(L'5', Key_5) \ + OP(L'6', Key_6) \ + OP(L'7', Key_7) \ + OP(L'8', Key_8) \ + OP(L'9', Key_9) \ + OP(L':', LSHIFT(Key_Semicolon)) \ + OP(L'<', LSHIFT(Key_Period)) \ + OP(L'=', Key_Equals) \ + OP(L'>', LSHIFT(Key_Comma)) \ + OP(L'@', LSHIFT(Key_2)) \ + OP(L'[', Key_RightBracket) \ + OP(L'\', Key_NonUsPound) \ + OP(L']', Key_LeftBracket) \ + OP(L'^', LSHIFT(Key_6)) \ + OP(L'_', LSHIFT(Key_Minus)) \ + OP(L'`', Key_Backtick) \ + OP(L'{', LSHIFT(Key_RightBracket)) \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_LeftBracket)) \ + OP(L'~', LSHIFT(Key_Backtick)) \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'،', Key_Comma) \ + OP(L'؛', Key_Semicolon) \ + OP(L'؟', LSHIFT(Key_Slash)) \ + OP(L'ء', LSHIFT(Key_H)) \ + OP(L'آ', LSHIFT(Key_J)) \ + OP(L'ؤ', LSHIFT(Key_B)) \ + OP(L'ئ', LSHIFT(Key_N)) \ + OP(L'ا', Key_J) \ + OP(L'ب', Key_I) \ + OP(L'ت', Key_U) \ + OP(L'ث', LSHIFT(Key_T)) \ + OP(L'ج', Key_O) \ + OP(L'ح', Key_P) \ + OP(L'خ', LSHIFT(Key_P)) \ + OP(L'د', Key_R) \ + OP(L'ذ', LSHIFT(Key_E)) \ + OP(L'ر', Key_D) \ + OP(L'ز', LSHIFT(Key_S)) \ + OP(L'س', Key_V) \ + OP(L'ش', Key_B) \ + OP(L'ص', Key_W) \ + OP(L'ض', LSHIFT(Key_W)) \ + OP(L'ط', Key_Q) \ + OP(L'ظ', LSHIFT(Key_Q)) \ + OP(L'ع', Key_M) \ + OP(L'غ', Key_N) \ + OP(L'ـ', LSHIFT(Key_I)) \ + OP(L'ف', Key_X) \ + OP(L'ق', Key_Z) \ + OP(L'ل', Key_G) \ + OP(L'م', Key_A) \ + OP(L'ن', Key_F) \ + OP(L'و', Key_S) \ + OP(L'ي', LSHIFT(Key_L)) \ + OP(L'ّ', LSHIFT(Key_Y)) \ + OP(L'٪', LSHIFT(Key_5)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٭', LSHIFT(Key_8)) \ + OP(L'ٹ', Key_T) /* U+0679, XKB_KEY_Arabic_tteh, ARABIC LETTER TTEH */ \ + OP(L'پ', Key_Y) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', LSHIFT(Key_O)) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ڈ', LSHIFT(Key_R)) /* U+0688, XKB_KEY_Arabic_ddal, ARABIC LETTER DDAL */ \ + OP(L'ڑ', LSHIFT(Key_D)) /* U+0691, XKB_KEY_Arabic_rreh, ARABIC LETTER RREH */ \ + OP(L'ژ', LSHIFT(Key_A)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ک', Key_K) /* U+06a9, XKB_KEY_Arabic_keheh, ARABIC LETTER KEHEH */ \ + OP(L'گ', LSHIFT(Key_K)) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'ں', LSHIFT(Key_F)) /* U+06ba, XKB_KEY_Arabic_noon_ghunna, ARABIC LETTER NOON GHUNNA */ \ + OP(L'ھ', Key_E) /* U+06be, XKB_KEY_Arabic_heh_doachashmee, ARABIC LETTER HEH DOACHASHMEE */ \ + OP(L'ہ', Key_H) /* U+06c1, XKB_KEY_Arabic_heh_goal, ARABIC LETTER HEH GOAL */ \ + OP(L'ۂ', LSHIFT(Key_G)) \ + OP(L'ۃ', LSHIFT(Key_U)) \ + OP(L'ی', Key_L) /* U+06cc, XKB_KEY_Farsi_yeh, ARABIC LETTER FARSI YEH */ \ + OP(L'ے', Key_C) /* U+06d2, XKB_KEY_Arabic_yeh_baree, ARABIC LETTER YEH BARREE */ \ + OP(L'ۓ', LSHIFT(Key_C)) \ + OP(L'۔', Key_Period) /* U+06d4, XKB_KEY_Arabic_fullstop, ARABIC FULL STOP */ \ + OP(L'ۖ', LSHIFT(Key_7)) \ + OP(L'‌', RALT(Key_W)) \ + OP(L'‍', RALT(Key_Q)) \ + OP(L'‎', RALT(Key_Z)) \ + OP(L'‏', RALT(Key_M)) \ + OP(L'‪', RALT(Key_X)) \ + OP(L'‫', RALT(Key_N)) \ + OP(L'‬', RALT(Key_V)) \ + OP(L'‭', RALT(Key_C)) \ + OP(L'‮', RALT(Key_B)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_ddal, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_fullstop, Key_Period) \ + OP(XKB_KEY_Arabic_gaf, LSHIFT(Key_K)) \ + OP(XKB_KEY_Arabic_heh_doachashmee, Key_E) \ + OP(XKB_KEY_Arabic_heh_goal, Key_H) \ + OP(XKB_KEY_Arabic_jeh, LSHIFT(Key_A)) \ + OP(XKB_KEY_Arabic_keheh, Key_K) \ + OP(XKB_KEY_Arabic_noon_ghunna, LSHIFT(Key_F)) \ + OP(XKB_KEY_Arabic_peh, Key_Y) \ + OP(XKB_KEY_Arabic_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_Arabic_rreh, LSHIFT(Key_D)) \ + OP(XKB_KEY_Arabic_tcheh, LSHIFT(Key_O)) \ + OP(XKB_KEY_Arabic_tteh, Key_T) \ + OP(XKB_KEY_Arabic_yeh_baree, Key_C) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Farsi_yeh, Key_L) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace in { +namespace urd_winkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace urd_winkeys +} // namespace in +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/iq/ku/keymap.h b/src/kaleidoscope/host_keymap/linux/iq/ku/keymap.h new file mode 100644 index 0000000000..2c1e4d766a --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/iq/ku/keymap.h @@ -0,0 +1,552 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: iq +// variant: ku + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_Backtick) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_2)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_Minus) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_NonUsPound) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_NonUsPound)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_1)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_LeftBracket)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_LeftBracket) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_Backtick) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_2)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_Minus) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_NonUsPound) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_NonUsPound)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_1)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_LeftBracket)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_LeftBracket) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_2)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_S)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_F)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Semicolon)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Â', RALT(LSHIFT(Key_A))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ç', LSHIFT(Key_Period)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ê', LSHIFT(Key_Comma)) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Î', LSHIFT(Key_Quote)) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ô', RALT(LSHIFT(Key_O))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', RALT(LSHIFT(Key_Comma))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'Û', LSHIFT(Key_RightBracket)) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'â', RALT(Key_A)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ç', Key_Period) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', LSHIFT(Key_Backtick)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ê', Key_Comma) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'î', Key_Quote) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ô', RALT(Key_O)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', RALT(Key_Comma)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'û', Key_RightBracket) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ğ', RALT(LSHIFT(Key_LeftBracket))) /* U+011e, XKB_KEY_Gbreve, LATIN CAPITAL LETTER G WITH BREVE */ \ + OP(L'ğ', RALT(Key_LeftBracket)) /* U+011f, XKB_KEY_gbreve, LATIN SMALL LETTER G WITH BREVE */ \ + OP(L'ı', RALT(Key_I)) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ş', LSHIFT(Key_Semicolon)) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', Key_Semicolon) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'₺', RALT(Key_T)) \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Ecircumflex, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gbreve, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acircumflex, RALT(Key_A)) \ + OP(XKB_KEY_acute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_2)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, Key_Minus) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_Equals)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_Period) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_comma, Key_NonUsPound) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Slash)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_ecircumflex, Key_Comma) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gbreve, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_grave, RALT(Key_NonUsPound)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_1)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, Key_Quote) \ + OP(XKB_KEY_idotless, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, RALT(Key_O)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_Comma)) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_F)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_4)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, Key_Backtick) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, Key_Semicolon) \ + OP(XKB_KEY_section, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_2)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, Key_RightBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_LeftBracket) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace iq { +namespace ku { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ku +} // namespace iq +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/iq/ku_alt/keymap.h b/src/kaleidoscope/host_keymap/linux/iq/ku_alt/keymap.h new file mode 100644 index 0000000000..70e392b696 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/iq/ku_alt/keymap.h @@ -0,0 +1,592 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: iq +// variant: ku_alt + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'Â', RALT(LSHIFT(Key_A))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ê', RALT(LSHIFT(Key_E))) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', RALT(LSHIFT(Key_O))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Û', RALT(LSHIFT(Key_U))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'â', RALT(Key_A)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ê', RALT(Key_E)) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', RALT(Key_O)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'û', RALT(Key_U)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ğ', RALT(LSHIFT(Key_G))) /* U+011e, XKB_KEY_Gbreve, LATIN CAPITAL LETTER G WITH BREVE */ \ + OP(L'ğ', RALT(Key_G)) /* U+011f, XKB_KEY_gbreve, LATIN SMALL LETTER G WITH BREVE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ş', RALT(LSHIFT(Key_S))) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', RALT(Key_S)) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'─', RALT(Key_Minus)) /* U+2500, XKB_KEY_horizlinescan5, BOX DRAWINGS LIGHT HORIZONTAL */ \ + OP(L'│', RALT(LSHIFT(Key_Minus))) /* U+2502, XKB_KEY_vertbar, BOX DRAWINGS LIGHT VERTICAL */ \ + OP(L'┌', RALT(LSHIFT(Key_7))) /* U+250c, XKB_KEY_upleftcorner, BOX DRAWINGS LIGHT DOWN AND RIGHT */ \ + OP(L'┐', RALT(LSHIFT(Key_0))) /* U+2510, XKB_KEY_uprightcorner, BOX DRAWINGS LIGHT DOWN AND LEFT */ \ + OP(L'└', RALT(Key_7)) /* U+2514, XKB_KEY_lowleftcorner, BOX DRAWINGS LIGHT UP AND RIGHT */ \ + OP(L'┘', RALT(Key_0)) /* U+2518, XKB_KEY_lowrightcorner, BOX DRAWINGS LIGHT UP AND LEFT */ \ + OP(L'├', RALT(Key_8)) /* U+251c, XKB_KEY_leftt, BOX DRAWINGS LIGHT VERTICAL AND RIGHT */ \ + OP(L'┤', RALT(Key_9)) /* U+2524, XKB_KEY_rightt, BOX DRAWINGS LIGHT VERTICAL AND LEFT */ \ + OP(L'┬', RALT(LSHIFT(Key_8))) /* U+252c, XKB_KEY_topt, BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */ \ + OP(L'┴', RALT(LSHIFT(Key_9))) /* U+2534, XKB_KEY_bott, BOX DRAWINGS LIGHT UP AND HORIZONTAL */ \ + OP(L'┼', RALT(Key_Equals)) /* U+253c, XKB_KEY_crossinglines, BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Ecircumflex, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gbreve, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acircumflex, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_bott, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_crossinglines, RALT(Key_Equals)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_ecircumflex, RALT(Key_E)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gbreve, RALT(Key_G)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_horizlinescan5, RALT(Key_Minus)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_leftt, RALT(Key_8)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lowleftcorner, RALT(Key_7)) \ + OP(XKB_KEY_lowrightcorner, RALT(Key_0)) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_rightt, RALT(Key_9)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_topt, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_upleftcorner, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_uprightcorner, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_vertbar, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace iq { +namespace ku_alt { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ku_alt +} // namespace iq +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/iq/ku_ara/keymap.h b/src/kaleidoscope/host_keymap/linux/iq/ku_ara/keymap.h new file mode 100644 index 0000000000..7a77e2993f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/iq/ku_ara/keymap.h @@ -0,0 +1,590 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: iq +// variant: ku_ara + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', RALT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Comma)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', RALT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', RALT(LSHIFT(Key_A))) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', RALT(LSHIFT(Key_B))) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', RALT(LSHIFT(Key_C))) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', RALT(LSHIFT(Key_D))) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', RALT(LSHIFT(Key_E))) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', RALT(LSHIFT(Key_F))) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', RALT(LSHIFT(Key_G))) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', RALT(LSHIFT(Key_H))) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', RALT(LSHIFT(Key_I))) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', RALT(LSHIFT(Key_J))) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', RALT(LSHIFT(Key_K))) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', RALT(LSHIFT(Key_L))) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', RALT(LSHIFT(Key_M))) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', RALT(LSHIFT(Key_N))) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', RALT(LSHIFT(Key_O))) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', RALT(LSHIFT(Key_P))) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', RALT(LSHIFT(Key_R))) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', RALT(LSHIFT(Key_S))) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', RALT(LSHIFT(Key_T))) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', RALT(LSHIFT(Key_U))) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', RALT(LSHIFT(Key_V))) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_Q)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', RALT(LSHIFT(Key_Y))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', RALT(LSHIFT(Key_Z))) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_LeftBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', RALT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(LSHIFT(Key_1))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', RALT(Key_A)) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', RALT(Key_B)) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', RALT(Key_C)) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', RALT(Key_D)) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', RALT(Key_E)) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', RALT(Key_F)) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', RALT(Key_G)) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', RALT(Key_H)) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', RALT(Key_I)) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', RALT(Key_J)) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', RALT(Key_K)) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', RALT(Key_L)) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', RALT(Key_M)) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', RALT(Key_N)) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', RALT(Key_O)) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', RALT(Key_P)) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', RALT(Key_R)) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', RALT(Key_S)) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', RALT(Key_T)) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', RALT(Key_U)) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', RALT(Key_V)) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', RALT(Key_Y)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', RALT(Key_Z)) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', RALT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Comma)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', RALT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', RALT(LSHIFT(Key_A))) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', RALT(LSHIFT(Key_B))) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', RALT(LSHIFT(Key_C))) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', RALT(LSHIFT(Key_D))) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', RALT(LSHIFT(Key_E))) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', RALT(LSHIFT(Key_F))) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', RALT(LSHIFT(Key_G))) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', RALT(LSHIFT(Key_H))) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', RALT(LSHIFT(Key_I))) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', RALT(LSHIFT(Key_J))) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', RALT(LSHIFT(Key_K))) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', RALT(LSHIFT(Key_L))) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', RALT(LSHIFT(Key_M))) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', RALT(LSHIFT(Key_N))) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', RALT(LSHIFT(Key_O))) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', RALT(LSHIFT(Key_P))) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', RALT(LSHIFT(Key_R))) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', RALT(LSHIFT(Key_S))) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', RALT(LSHIFT(Key_T))) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', RALT(LSHIFT(Key_U))) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', RALT(LSHIFT(Key_V))) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_Q)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', RALT(LSHIFT(Key_Y))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', RALT(LSHIFT(Key_Z))) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_LeftBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', RALT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(LSHIFT(Key_1))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', RALT(Key_A)) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', RALT(Key_B)) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', RALT(Key_C)) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', RALT(Key_D)) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', RALT(Key_E)) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', RALT(Key_F)) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', RALT(Key_G)) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', RALT(Key_H)) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', RALT(Key_I)) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', RALT(Key_J)) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', RALT(Key_K)) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', RALT(Key_L)) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', RALT(Key_M)) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', RALT(Key_N)) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', RALT(Key_O)) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', RALT(Key_P)) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', RALT(Key_R)) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', RALT(Key_S)) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', RALT(Key_T)) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', RALT(Key_U)) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', RALT(Key_V)) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', RALT(Key_Y)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', RALT(Key_Z)) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ç', RALT(LSHIFT(Key_NonUsPound))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ê', RALT(LSHIFT(Key_Semicolon))) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Î', RALT(LSHIFT(Key_Quote))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'×', RALT(LSHIFT(Key_6))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Û', RALT(LSHIFT(Key_LeftBracket))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ç', RALT(Key_NonUsPound)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ê', RALT(Key_Semicolon)) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'î', RALT(Key_Quote)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'÷', LSHIFT(Key_Backtick)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'û', RALT(Key_LeftBracket)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ş', RALT(LSHIFT(Key_RightBracket))) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', RALT(Key_RightBracket)) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'،', Key_Comma) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', Key_Semicolon) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', LSHIFT(Key_U)) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'آ', LSHIFT(Key_A)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_J)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', LSHIFT(Key_O)) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_F)) /* U+0625, XKB_KEY_Arabic_hamzaunderalef, ARABIC LETTER ALEF WITH HAMZA BELOW */ \ + OP(L'ئ', Key_U) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', Key_A) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_B) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', LSHIFT(Key_N)) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_T) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', LSHIFT(Key_P)) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_C) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', Key_I) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_X) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_D) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', LSHIFT(Key_D)) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_R) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_Z) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', LSHIFT(Key_S)) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', LSHIFT(Key_X)) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', LSHIFT(Key_Z)) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', LSHIFT(Key_T)) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', LSHIFT(Key_V)) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', LSHIFT(Key_I)) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', LSHIFT(Key_G)) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_Minus)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'ف', Key_F) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_Q) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', LSHIFT(Key_K)) /* U+0643, XKB_KEY_Arabic_kaf, ARABIC LETTER KAF */ \ + OP(L'ل', Key_L) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_M) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_N) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_H) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_W) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', LSHIFT(Key_B)) \ + OP(L'٪', RALT(LSHIFT(Key_5))) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', RALT(LSHIFT(Key_3))) \ + OP(L'پ', Key_P) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', LSHIFT(Key_C)) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ڕ', LSHIFT(Key_R)) \ + OP(L'ژ', Key_J) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ڤ', Key_V) /* U+06a4, XKB_KEY_Arabic_veh, ARABIC LETTER VEH */ \ + OP(L'ک', Key_K) /* U+06a9, XKB_KEY_Arabic_keheh, ARABIC LETTER KEHEH */ \ + OP(L'گ', Key_G) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'ڵ', LSHIFT(Key_L)) \ + OP(L'ۆ', Key_O) \ + OP(L'ی', Key_Y) /* U+06cc, XKB_KEY_Farsi_yeh, ARABIC LETTER FARSI YEH */ \ + OP(L'ێ', LSHIFT(Key_Y)) \ + OP(L'ە', Key_E) \ + OP(L'۰', RALT(Key_0)) /* U+06f0, XKB_KEY_Farsi_0, EXTENDED ARABIC-INDIC DIGIT ZERO */ \ + OP(L'۱', RALT(Key_1)) /* U+06f1, XKB_KEY_Farsi_1, EXTENDED ARABIC-INDIC DIGIT ONE */ \ + OP(L'۲', RALT(Key_2)) /* U+06f2, XKB_KEY_Farsi_2, EXTENDED ARABIC-INDIC DIGIT TWO */ \ + OP(L'۳', RALT(Key_3)) /* U+06f3, XKB_KEY_Farsi_3, EXTENDED ARABIC-INDIC DIGIT THREE */ \ + OP(L'۴', RALT(Key_4)) /* U+06f4, XKB_KEY_Farsi_4, EXTENDED ARABIC-INDIC DIGIT FOUR */ \ + OP(L'۵', RALT(Key_5)) /* U+06f5, XKB_KEY_Farsi_5, EXTENDED ARABIC-INDIC DIGIT FIVE */ \ + OP(L'۶', RALT(Key_6)) /* U+06f6, XKB_KEY_Farsi_6, EXTENDED ARABIC-INDIC DIGIT SIX */ \ + OP(L'۷', RALT(Key_7)) /* U+06f7, XKB_KEY_Farsi_7, EXTENDED ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'۸', RALT(Key_8)) /* U+06f8, XKB_KEY_Farsi_8, EXTENDED ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'۹', RALT(Key_9)) /* U+06f9, XKB_KEY_Farsi_9, EXTENDED ARABIC-INDIC DIGIT NINE */ \ + OP(L'‌', LSHIFT(Key_H)) \ + OP(L'‍', Key_Backtick) \ + OP(L'‎', RALT(LSHIFT(Key_9))) \ + OP(L'‏', RALT(LSHIFT(Key_0))) \ + OP(L'•', RALT(LSHIFT(Key_8))) /* U+2022, XKB_KEY_enfilledcircbullet, BULLET */ \ + OP(L'−', RALT(Key_Equals)) \ + OP(L'﷼', RALT(LSHIFT(Key_4))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_ain, LSHIFT(Key_I)) \ + OP(XKB_KEY_Arabic_alef, Key_A) \ + OP(XKB_KEY_Arabic_beh, Key_B) \ + OP(XKB_KEY_Arabic_comma, Key_Comma) \ + OP(XKB_KEY_Arabic_dad, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Arabic_dal, Key_D) \ + OP(XKB_KEY_Arabic_feh, Key_F) \ + OP(XKB_KEY_Arabic_gaf, Key_G) \ + OP(XKB_KEY_Arabic_ghain, LSHIFT(Key_G)) \ + OP(XKB_KEY_Arabic_ha, Key_H) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, Key_I) \ + OP(XKB_KEY_Arabic_hamza, LSHIFT(Key_U)) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_J)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, LSHIFT(Key_O)) \ + OP(XKB_KEY_Arabic_hamzaonyeh, Key_U) \ + OP(XKB_KEY_Arabic_hamzaunderalef, LSHIFT(Key_F)) \ + OP(XKB_KEY_Arabic_jeem, Key_C) \ + OP(XKB_KEY_Arabic_jeh, Key_J) \ + OP(XKB_KEY_Arabic_kaf, LSHIFT(Key_K)) \ + OP(XKB_KEY_Arabic_keheh, Key_K) \ + OP(XKB_KEY_Arabic_khah, Key_X) \ + OP(XKB_KEY_Arabic_lam, Key_L) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_A)) \ + OP(XKB_KEY_Arabic_meem, Key_M) \ + OP(XKB_KEY_Arabic_noon, Key_N) \ + OP(XKB_KEY_Arabic_peh, Key_P) \ + OP(XKB_KEY_Arabic_percent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_Arabic_qaf, Key_Q) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_R) \ + OP(XKB_KEY_Arabic_sad, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, Key_Semicolon) \ + OP(XKB_KEY_Arabic_sheen, LSHIFT(Key_S)) \ + OP(XKB_KEY_Arabic_tah, LSHIFT(Key_T)) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Arabic_tcheh, LSHIFT(Key_C)) \ + OP(XKB_KEY_Arabic_teh, Key_T) \ + OP(XKB_KEY_Arabic_tehmarbuta, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_thal, LSHIFT(Key_D)) \ + OP(XKB_KEY_Arabic_theh, LSHIFT(Key_P)) \ + OP(XKB_KEY_Arabic_veh, Key_V) \ + OP(XKB_KEY_Arabic_waw, Key_W) \ + OP(XKB_KEY_Arabic_zah, LSHIFT(Key_V)) \ + OP(XKB_KEY_Arabic_zain, Key_Z) \ + OP(XKB_KEY_B, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Ecircumflex, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Farsi_0, RALT(Key_0)) \ + OP(XKB_KEY_Farsi_1, RALT(Key_1)) \ + OP(XKB_KEY_Farsi_2, RALT(Key_2)) \ + OP(XKB_KEY_Farsi_3, RALT(Key_3)) \ + OP(XKB_KEY_Farsi_4, RALT(Key_4)) \ + OP(XKB_KEY_Farsi_5, RALT(Key_5)) \ + OP(XKB_KEY_Farsi_6, RALT(Key_6)) \ + OP(XKB_KEY_Farsi_7, RALT(Key_7)) \ + OP(XKB_KEY_Farsi_8, RALT(Key_8)) \ + OP(XKB_KEY_Farsi_9, RALT(Key_9)) \ + OP(XKB_KEY_Farsi_yeh, Key_Y) \ + OP(XKB_KEY_G, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_H, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_K, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scedilla, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_W, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_X, LSHIFT(Key_Q)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, RALT(Key_B)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketleft, Key_RightBracket) \ + OP(XKB_KEY_bracketright, Key_LeftBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, RALT(Key_C)) \ + OP(XKB_KEY_ccedilla, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, RALT(Key_Comma)) \ + OP(XKB_KEY_d, RALT(Key_D)) \ + OP(XKB_KEY_division, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, RALT(Key_E)) \ + OP(XKB_KEY_ecircumflex, RALT(Key_Semicolon)) \ + OP(XKB_KEY_enfilledcircbullet, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, RALT(Key_F)) \ + OP(XKB_KEY_g, RALT(Key_G)) \ + OP(XKB_KEY_grave, RALT(LSHIFT(Key_1))) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_h, RALT(Key_H)) \ + OP(XKB_KEY_i, RALT(Key_I)) \ + OP(XKB_KEY_icircumflex, RALT(Key_Quote)) \ + OP(XKB_KEY_j, RALT(Key_J)) \ + OP(XKB_KEY_k, RALT(Key_K)) \ + OP(XKB_KEY_l, RALT(Key_L)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, RALT(Key_M)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_n, RALT(Key_N)) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, RALT(Key_O)) \ + OP(XKB_KEY_p, RALT(Key_P)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, RALT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, RALT(Key_R)) \ + OP(XKB_KEY_s, RALT(Key_S)) \ + OP(XKB_KEY_scedilla, RALT(Key_RightBracket)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, RALT(Key_T)) \ + OP(XKB_KEY_u, RALT(Key_U)) \ + OP(XKB_KEY_ucircumflex, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_underscore, RALT(Key_Minus)) \ + OP(XKB_KEY_v, RALT(Key_V)) \ + OP(XKB_KEY_w, RALT(Key_W)) \ + OP(XKB_KEY_x, RALT(Key_X)) \ + OP(XKB_KEY_y, RALT(Key_Y)) \ + OP(XKB_KEY_z, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace iq { +namespace ku_ara { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ku_ara +} // namespace iq +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/iq/ku_f/keymap.h b/src/kaleidoscope/host_keymap/linux/iq/ku_f/keymap.h new file mode 100644 index 0000000000..72fc5f103d --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/iq/ku_f/keymap.h @@ -0,0 +1,548 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: iq +// variant: ku_f + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Backtick) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Slash) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Minus) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_F)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_Comma)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_V)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_Y)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Q)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_O)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_R)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_Z)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_J)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_K)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_I)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_T)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_LeftBracket)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_U)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_M)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_H)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_C)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_RightBracket)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_E)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Semicolon)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_N)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_F) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_Comma) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_V) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_Y) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Q) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_O) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_R) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_Z) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_J) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_K) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_I) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_T) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_LeftBracket) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_U) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_M) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_H) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_C) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_RightBracket) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_E) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Semicolon) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_N) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Backtick) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Slash) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Minus) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_F)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_Comma)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_V)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_Y)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Q)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_O)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_R)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_Z)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_J)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_K)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_I)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_T)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_LeftBracket)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_U)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_M)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_H)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_C)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_RightBracket)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_E)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Semicolon)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_N)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_F) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_Comma) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_V) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_Y) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Q) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_O) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_R) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_Z) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_J) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_K) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_I) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_T) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_LeftBracket) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_U) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_M) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_H) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_C) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_RightBracket) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_E) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Semicolon) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_N) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Comma))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_V)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_P)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(Key_Y)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_M)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_V))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_U)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_O)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Semicolon)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_K)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Slash)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Â', RALT(LSHIFT(Key_F))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ç', LSHIFT(Key_B)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ê', LSHIFT(Key_X)) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Î', LSHIFT(Key_S)) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ô', RALT(LSHIFT(Key_T))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', RALT(LSHIFT(Key_X))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Û', LSHIFT(Key_A)) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', RALT(LSHIFT(Key_A))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'â', RALT(Key_F)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ç', Key_B) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ê', Key_X) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'î', Key_S) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ô', RALT(Key_T)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', RALT(Key_X)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_Period)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'û', Key_A) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', RALT(Key_A)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Ğ', RALT(LSHIFT(Key_E))) /* U+011e, XKB_KEY_Gbreve, LATIN CAPITAL LETTER G WITH BREVE */ \ + OP(L'ğ', RALT(Key_E)) /* U+011f, XKB_KEY_gbreve, LATIN SMALL LETTER G WITH BREVE */ \ + OP(L'İ', RALT(LSHIFT(Key_S))) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'Ş', LSHIFT(Key_Quote)) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', Key_Quote) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'“', RALT(Key_C)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_D)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'₺', RALT(Key_H)) \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_V)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_B)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_Ecircumflex, LSHIFT(Key_X)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_D)) \ + OP(XKB_KEY_F, LSHIFT(Key_Q)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_W)) \ + OP(XKB_KEY_Gbreve, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_H, LSHIFT(Key_O)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_R)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Icircumflex, LSHIFT(Key_S)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_Z)) \ + OP(XKB_KEY_K, LSHIFT(Key_J)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_K)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_I)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_T)) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_R, LSHIFT(Key_U)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_M)) \ + OP(XKB_KEY_Scedilla, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_H)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_G)) \ + OP(XKB_KEY_Ucircumflex, LSHIFT(Key_A)) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_C)) \ + OP(XKB_KEY_W, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_X, LSHIFT(Key_E)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Z, LSHIFT(Key_N)) \ + OP(XKB_KEY_a, Key_F) \ + OP(XKB_KEY_acircumflex, RALT(Key_F)) \ + OP(XKB_KEY_acute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_7)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_Comma) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_Equals)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_V) \ + OP(XKB_KEY_ccedilla, Key_B) \ + OP(XKB_KEY_cent, RALT(Key_V)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Slash) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_d, Key_Y) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_degree, RALT(Key_O)) \ + OP(XKB_KEY_division, RALT(Key_Period)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_ecircumflex, Key_X) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_Q) \ + OP(XKB_KEY_g, Key_W) \ + OP(XKB_KEY_gbreve, RALT(Key_E)) \ + OP(XKB_KEY_grave, RALT(Key_NonUsPound)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_O) \ + OP(XKB_KEY_i, Key_R) \ + OP(XKB_KEY_icircumflex, Key_S) \ + OP(XKB_KEY_j, Key_Z) \ + OP(XKB_KEY_k, Key_J) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_C)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_K) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, RALT(Key_K)) \ + OP(XKB_KEY_multiply, RALT(Key_Comma)) \ + OP(XKB_KEY_n, Key_I) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_T) \ + OP(XKB_KEY_ocircumflex, RALT(Key_T)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_X)) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Slash)) \ + OP(XKB_KEY_plus, Key_Backtick) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_LeftBracket) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_U) \ + OP(XKB_KEY_registered, RALT(Key_U)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_s, Key_M) \ + OP(XKB_KEY_scedilla, Key_Quote) \ + OP(XKB_KEY_section, RALT(Key_M)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_slash, Key_Minus) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_P)) \ + OP(XKB_KEY_t, Key_H) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_G) \ + OP(XKB_KEY_ucircumflex, Key_A) \ + OP(XKB_KEY_udiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_v, Key_C) \ + OP(XKB_KEY_w, Key_RightBracket) \ + OP(XKB_KEY_x, Key_E) \ + OP(XKB_KEY_y, Key_Semicolon) \ + OP(XKB_KEY_yen, RALT(Key_Y)) \ + OP(XKB_KEY_z, Key_N) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace iq { +namespace ku_f { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ku_f +} // namespace iq +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/iq/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/iq/standard/keymap.h new file mode 100644 index 0000000000..ca3de5657a --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/iq/standard/keymap.h @@ -0,0 +1,452 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: iq +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_M)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_M)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', LSHIFT(Key_O)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', LSHIFT(Key_I)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'؉', RALT(LSHIFT(Key_Backtick))) \ + OP(L'،', LSHIFT(Key_K)) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', LSHIFT(Key_P)) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؜', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', Key_X) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'آ', LSHIFT(Key_N)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_H)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', Key_C) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_Y)) /* U+0625, XKB_KEY_Arabic_hamzaunderalef, ARABIC LETTER ALEF WITH HAMZA BELOW */ \ + OP(L'ئ', Key_Z) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', Key_H) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_F) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', Key_M) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_J) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', Key_E) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_LeftBracket) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', Key_P) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_O) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_RightBracket) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', Key_Backtick) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_V) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_Period) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', Key_A) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', Key_W) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', Key_Q) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', Key_Quote) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', Key_Slash) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', Key_U) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', Key_Y) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_J)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'ف', Key_T) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_R) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', Key_Semicolon) /* U+0643, XKB_KEY_Arabic_kaf, ARABIC LETTER KAF */ \ + OP(L'ل', Key_G) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_L) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_K) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_I) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_Comma) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', Key_N) /* U+0649, XKB_KEY_Arabic_alefmaksura, ARABIC LETTER ALEF MAKSURA */ \ + OP(L'ي', Key_D) /* U+064a, XKB_KEY_Arabic_yeh, ARABIC LETTER YEH */ \ + OP(L'ً', LSHIFT(Key_W)) /* U+064b, XKB_KEY_Arabic_fathatan, ARABIC FATHATAN */ \ + OP(L'ٌ', LSHIFT(Key_R)) /* U+064c, XKB_KEY_Arabic_dammatan, ARABIC DAMMATAN */ \ + OP(L'ٍ', LSHIFT(Key_S)) /* U+064d, XKB_KEY_Arabic_kasratan, ARABIC KASRATAN */ \ + OP(L'َ', LSHIFT(Key_Q)) /* U+064e, XKB_KEY_Arabic_fatha, ARABIC FATHA */ \ + OP(L'ُ', LSHIFT(Key_E)) /* U+064f, XKB_KEY_Arabic_damma, ARABIC DAMMA */ \ + OP(L'ِ', LSHIFT(Key_A)) /* U+0650, XKB_KEY_Arabic_kasra, ARABIC KASRA */ \ + OP(L'ّ', LSHIFT(Key_Backtick)) /* U+0651, XKB_KEY_Arabic_shadda, ARABIC SHADDA */ \ + OP(L'ْ', LSHIFT(Key_X)) /* U+0652, XKB_KEY_Arabic_sukun, ARABIC SUKUN */ \ + OP(L'٠', RALT(Key_0)) /* U+0660, XKB_KEY_Arabic_0, ARABIC-INDIC DIGIT ZERO */ \ + OP(L'١', RALT(Key_1)) /* U+0661, XKB_KEY_Arabic_1, ARABIC-INDIC DIGIT ONE */ \ + OP(L'٢', RALT(Key_2)) /* U+0662, XKB_KEY_Arabic_2, ARABIC-INDIC DIGIT TWO */ \ + OP(L'٣', RALT(Key_3)) /* U+0663, XKB_KEY_Arabic_3, ARABIC-INDIC DIGIT THREE */ \ + OP(L'٤', RALT(Key_4)) /* U+0664, XKB_KEY_Arabic_4, ARABIC-INDIC DIGIT FOUR */ \ + OP(L'٥', RALT(Key_5)) /* U+0665, XKB_KEY_Arabic_5, ARABIC-INDIC DIGIT FIVE */ \ + OP(L'٦', RALT(Key_6)) /* U+0666, XKB_KEY_Arabic_6, ARABIC-INDIC DIGIT SIX */ \ + OP(L'٧', RALT(Key_7)) /* U+0667, XKB_KEY_Arabic_7, ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'٨', RALT(Key_8)) /* U+0668, XKB_KEY_Arabic_8, ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'٩', RALT(Key_9)) /* U+0669, XKB_KEY_Arabic_9, ARABIC-INDIC DIGIT NINE */ \ + OP(L'٪', RALT(Key_Backtick)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', RALT(Key_K)) \ + OP(L'٬', RALT(Key_Comma)) \ + OP(L'٭', RALT(Key_Slash)) \ + OP(L'ٰ', RALT(Key_N)) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٱ', RALT(Key_H)) \ + OP(L'پ', RALT(Key_F)) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', RALT(Key_LeftBracket)) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ژ', RALT(Key_Period)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ڤ', RALT(Key_T)) /* U+06a4, XKB_KEY_Arabic_veh, ARABIC LETTER VEH */ \ + OP(L'گ', RALT(Key_Semicolon)) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'‌', RALT(LSHIFT(Key_Slash))) \ + OP(L'‍', RALT(LSHIFT(Key_Quote))) \ + OP(L'‎', RALT(LSHIFT(Key_P))) \ + OP(L'‏', RALT(LSHIFT(Key_LeftBracket))) \ + OP(L'‑', RALT(LSHIFT(Key_Minus))) \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'…', LSHIFT(Key_NonUsPound)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‪', RALT(LSHIFT(Key_Y))) \ + OP(L'‫', RALT(LSHIFT(Key_U))) \ + OP(L'‬', RALT(LSHIFT(Key_I))) \ + OP(L' ', RALT(LSHIFT(Key_NonUsPound))) \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'⁦', RALT(LSHIFT(Key_Q))) \ + OP(L'⁧', RALT(LSHIFT(Key_W))) \ + OP(L'⁨', RALT(LSHIFT(Key_E))) \ + OP(L'⁩', RALT(LSHIFT(Key_R))) \ + OP(L'≈', RALT(LSHIFT(Key_Equals))) /* U+2248, XKB_KEY_approxeq, ALMOST EQUAL TO */ \ + OP(L'≠', RALT(Key_Equals)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'⟨', RALT(Key_NonUsPound)) \ + OP(L'⟩', RALT(Key_Quote)) \ + OP(L'ﻵ', LSHIFT(Key_B)) \ + OP(L'ﻷ', LSHIFT(Key_G)) \ + OP(L'ﻹ', LSHIFT(Key_T)) \ + OP(L'ﻻ', Key_B) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_0, RALT(Key_0)) \ + OP(XKB_KEY_Arabic_1, RALT(Key_1)) \ + OP(XKB_KEY_Arabic_2, RALT(Key_2)) \ + OP(XKB_KEY_Arabic_3, RALT(Key_3)) \ + OP(XKB_KEY_Arabic_4, RALT(Key_4)) \ + OP(XKB_KEY_Arabic_5, RALT(Key_5)) \ + OP(XKB_KEY_Arabic_6, RALT(Key_6)) \ + OP(XKB_KEY_Arabic_7, RALT(Key_7)) \ + OP(XKB_KEY_Arabic_8, RALT(Key_8)) \ + OP(XKB_KEY_Arabic_9, RALT(Key_9)) \ + OP(XKB_KEY_Arabic_ain, Key_U) \ + OP(XKB_KEY_Arabic_alef, Key_H) \ + OP(XKB_KEY_Arabic_alefmaksura, Key_N) \ + OP(XKB_KEY_Arabic_beh, Key_F) \ + OP(XKB_KEY_Arabic_comma, LSHIFT(Key_K)) \ + OP(XKB_KEY_Arabic_dad, Key_Q) \ + OP(XKB_KEY_Arabic_dal, Key_RightBracket) \ + OP(XKB_KEY_Arabic_damma, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_dammatan, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_fatha, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Arabic_fathatan, LSHIFT(Key_W)) \ + OP(XKB_KEY_Arabic_feh, Key_T) \ + OP(XKB_KEY_Arabic_gaf, RALT(Key_Semicolon)) \ + OP(XKB_KEY_Arabic_ghain, Key_Y) \ + OP(XKB_KEY_Arabic_ha, Key_I) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, Key_P) \ + OP(XKB_KEY_Arabic_hamza, Key_X) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, Key_C) \ + OP(XKB_KEY_Arabic_hamzaonyeh, Key_Z) \ + OP(XKB_KEY_Arabic_hamzaunderalef, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Arabic_jeem, Key_LeftBracket) \ + OP(XKB_KEY_Arabic_jeh, RALT(Key_Period)) \ + OP(XKB_KEY_Arabic_kaf, Key_Semicolon) \ + OP(XKB_KEY_Arabic_kasra, LSHIFT(Key_A)) \ + OP(XKB_KEY_Arabic_kasratan, LSHIFT(Key_S)) \ + OP(XKB_KEY_Arabic_khah, Key_O) \ + OP(XKB_KEY_Arabic_lam, Key_G) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_meem, Key_L) \ + OP(XKB_KEY_Arabic_noon, Key_K) \ + OP(XKB_KEY_Arabic_peh, RALT(Key_F)) \ + OP(XKB_KEY_Arabic_percent, RALT(Key_Backtick)) \ + OP(XKB_KEY_Arabic_qaf, Key_R) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_V) \ + OP(XKB_KEY_Arabic_sad, Key_W) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, LSHIFT(Key_P)) \ + OP(XKB_KEY_Arabic_shadda, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Arabic_sheen, Key_A) \ + OP(XKB_KEY_Arabic_sukun, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_superscript_alef, RALT(Key_N)) \ + OP(XKB_KEY_Arabic_tah, Key_Quote) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_J)) \ + OP(XKB_KEY_Arabic_tcheh, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_Arabic_teh, Key_J) \ + OP(XKB_KEY_Arabic_tehmarbuta, Key_M) \ + OP(XKB_KEY_Arabic_thal, Key_Backtick) \ + OP(XKB_KEY_Arabic_theh, Key_E) \ + OP(XKB_KEY_Arabic_veh, RALT(Key_T)) \ + OP(XKB_KEY_Arabic_waw, Key_Comma) \ + OP(XKB_KEY_Arabic_yeh, Key_D) \ + OP(XKB_KEY_Arabic_zah, Key_Slash) \ + OP(XKB_KEY_Arabic_zain, Key_Period) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_M)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_approxeq, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Z)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_V)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_C)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_F)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_D)) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_division, LSHIFT(Key_I)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_ellipsis, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, LSHIFT(Key_U)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_less, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, LSHIFT(Key_O)) \ + OP(XKB_KEY_notequal, RALT(Key_Equals)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, LSHIFT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_slash, LSHIFT(Key_L)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace iq { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace iq +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ir/ave/keymap.h b/src/kaleidoscope/host_keymap/linux/ir/ave/keymap.h new file mode 100644 index 0000000000..5fcb3c608b --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ir/ave/keymap.h @@ -0,0 +1,262 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ir +// variant: ave + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'·', LSHIFT(Key_Slash)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'', LSHIFT(Key_H)) \ + OP(L'', LSHIFT(Key_K)) \ + OP(L'', LSHIFT(Key_C)) \ + OP(L'', LSHIFT(Key_L)) \ + OP(L'𐬀', Key_A) \ + OP(L'𐬁', LSHIFT(Key_A)) \ + OP(L'𐬂', Key_RightBracket) \ + OP(L'𐬃', LSHIFT(Key_RightBracket)) \ + OP(L'𐬄', Key_NonUsPound) \ + OP(L'𐬅', LSHIFT(Key_NonUsPound)) \ + OP(L'𐬆', Key_LeftBracket) \ + OP(L'𐬇', LSHIFT(Key_LeftBracket)) \ + OP(L'𐬈', Key_E) \ + OP(L'𐬉', LSHIFT(Key_E)) \ + OP(L'𐬊', Key_O) \ + OP(L'𐬋', LSHIFT(Key_O)) \ + OP(L'𐬌', Key_I) \ + OP(L'𐬍', LSHIFT(Key_I)) \ + OP(L'𐬎', Key_U) \ + OP(L'𐬏', LSHIFT(Key_U)) \ + OP(L'𐬐', Key_K) \ + OP(L'𐬑', Key_X) \ + OP(L'𐬒', LSHIFT(Key_X)) \ + OP(L'𐬓', LSHIFT(Key_V)) \ + OP(L'𐬔', Key_G) \ + OP(L'𐬕', LSHIFT(Key_G)) \ + OP(L'𐬖', LSHIFT(Key_F)) \ + OP(L'𐬗', Key_C) \ + OP(L'𐬘', Key_J) \ + OP(L'𐬙', Key_T) \ + OP(L'𐬚', LSHIFT(Key_T)) \ + OP(L'𐬛', Key_D) \ + OP(L'𐬜', LSHIFT(Key_D)) \ + OP(L'𐬝', Key_Quote) \ + OP(L'𐬞', Key_P) \ + OP(L'𐬟', Key_F) \ + OP(L'𐬠', Key_B) \ + OP(L'𐬡', LSHIFT(Key_B)) \ + OP(L'𐬢', Key_Q) \ + OP(L'𐬣', LSHIFT(Key_Q)) \ + OP(L'𐬤', LSHIFT(Key_J)) \ + OP(L'𐬥', Key_N) \ + OP(L'𐬦', LSHIFT(Key_R)) \ + OP(L'𐬧', LSHIFT(Key_N)) \ + OP(L'𐬨', Key_M) \ + OP(L'𐬩', LSHIFT(Key_M)) \ + OP(L'𐬪', LSHIFT(Key_Y)) \ + OP(L'𐬫', Key_Y) \ + OP(L'𐬬', Key_V) \ + OP(L'𐬭', Key_R) \ + OP(L'𐬮', Key_L) \ + OP(L'𐬯', Key_S) \ + OP(L'𐬰', Key_Z) \ + OP(L'𐬱', LSHIFT(Key_S)) \ + OP(L'𐬲', LSHIFT(Key_Z)) \ + OP(L'𐬳', Key_W) \ + OP(L'𐬴', LSHIFT(Key_W)) \ + OP(L'𐬵', Key_H) \ + OP(L'𐬹', LSHIFT(Key_Comma)) \ + OP(L'𐬺', LSHIFT(Key_Semicolon)) \ + OP(L'𐬻', Key_Semicolon) \ + OP(L'𐬼', Key_Comma) \ + OP(L'𐬽', LSHIFT(Key_Period)) \ + OP(L'𐬾', Key_Period) \ + OP(L'𐬿', Key_Slash) \ + OP(L'𐭸', Key_1) \ + OP(L'𐭹', Key_2) \ + OP(L'𐭺', Key_3) \ + OP(L'𐭻', Key_4) \ + OP(L'𐭼', Key_5) \ + OP(L'𐭽', Key_6) \ + OP(L'𐭾', Key_7) \ + OP(L'𐭿', Key_8) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_periodcentered, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ir { +namespace ave { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ave +} // namespace ir +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ir/ku/keymap.h b/src/kaleidoscope/host_keymap/linux/ir/ku/keymap.h new file mode 100644 index 0000000000..39df0fc4d7 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ir/ku/keymap.h @@ -0,0 +1,552 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ir +// variant: ku + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_Backtick) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_2)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_Minus) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_NonUsPound) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_NonUsPound)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_1)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_LeftBracket)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_LeftBracket) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_Backtick) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_2)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_Minus) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_NonUsPound) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_NonUsPound)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_1)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_LeftBracket)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_LeftBracket) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_2)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_S)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_F)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Semicolon)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Â', RALT(LSHIFT(Key_A))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ç', LSHIFT(Key_Period)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ê', LSHIFT(Key_Comma)) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Î', LSHIFT(Key_Quote)) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ô', RALT(LSHIFT(Key_O))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', RALT(LSHIFT(Key_Comma))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'Û', LSHIFT(Key_RightBracket)) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'â', RALT(Key_A)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ç', Key_Period) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', LSHIFT(Key_Backtick)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ê', Key_Comma) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'î', Key_Quote) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ô', RALT(Key_O)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', RALT(Key_Comma)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'û', Key_RightBracket) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ğ', RALT(LSHIFT(Key_LeftBracket))) /* U+011e, XKB_KEY_Gbreve, LATIN CAPITAL LETTER G WITH BREVE */ \ + OP(L'ğ', RALT(Key_LeftBracket)) /* U+011f, XKB_KEY_gbreve, LATIN SMALL LETTER G WITH BREVE */ \ + OP(L'ı', RALT(Key_I)) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ş', LSHIFT(Key_Semicolon)) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', Key_Semicolon) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'₺', RALT(Key_T)) \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Ecircumflex, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gbreve, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acircumflex, RALT(Key_A)) \ + OP(XKB_KEY_acute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_2)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, Key_Minus) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_Equals)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_Period) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_comma, Key_NonUsPound) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Slash)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_ecircumflex, Key_Comma) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gbreve, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_grave, RALT(Key_NonUsPound)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_1)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, Key_Quote) \ + OP(XKB_KEY_idotless, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, RALT(Key_O)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_Comma)) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_F)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_4)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, Key_Backtick) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, Key_Semicolon) \ + OP(XKB_KEY_section, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_2)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, Key_RightBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_LeftBracket) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ir { +namespace ku { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ku +} // namespace ir +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ir/ku_alt/keymap.h b/src/kaleidoscope/host_keymap/linux/ir/ku_alt/keymap.h new file mode 100644 index 0000000000..254621abe9 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ir/ku_alt/keymap.h @@ -0,0 +1,592 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ir +// variant: ku_alt + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'Â', RALT(LSHIFT(Key_A))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ê', RALT(LSHIFT(Key_E))) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', RALT(LSHIFT(Key_O))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Û', RALT(LSHIFT(Key_U))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'â', RALT(Key_A)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ê', RALT(Key_E)) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', RALT(Key_O)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'û', RALT(Key_U)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ğ', RALT(LSHIFT(Key_G))) /* U+011e, XKB_KEY_Gbreve, LATIN CAPITAL LETTER G WITH BREVE */ \ + OP(L'ğ', RALT(Key_G)) /* U+011f, XKB_KEY_gbreve, LATIN SMALL LETTER G WITH BREVE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ş', RALT(LSHIFT(Key_S))) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', RALT(Key_S)) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'─', RALT(Key_Minus)) /* U+2500, XKB_KEY_horizlinescan5, BOX DRAWINGS LIGHT HORIZONTAL */ \ + OP(L'│', RALT(LSHIFT(Key_Minus))) /* U+2502, XKB_KEY_vertbar, BOX DRAWINGS LIGHT VERTICAL */ \ + OP(L'┌', RALT(LSHIFT(Key_7))) /* U+250c, XKB_KEY_upleftcorner, BOX DRAWINGS LIGHT DOWN AND RIGHT */ \ + OP(L'┐', RALT(LSHIFT(Key_0))) /* U+2510, XKB_KEY_uprightcorner, BOX DRAWINGS LIGHT DOWN AND LEFT */ \ + OP(L'└', RALT(Key_7)) /* U+2514, XKB_KEY_lowleftcorner, BOX DRAWINGS LIGHT UP AND RIGHT */ \ + OP(L'┘', RALT(Key_0)) /* U+2518, XKB_KEY_lowrightcorner, BOX DRAWINGS LIGHT UP AND LEFT */ \ + OP(L'├', RALT(Key_8)) /* U+251c, XKB_KEY_leftt, BOX DRAWINGS LIGHT VERTICAL AND RIGHT */ \ + OP(L'┤', RALT(Key_9)) /* U+2524, XKB_KEY_rightt, BOX DRAWINGS LIGHT VERTICAL AND LEFT */ \ + OP(L'┬', RALT(LSHIFT(Key_8))) /* U+252c, XKB_KEY_topt, BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */ \ + OP(L'┴', RALT(LSHIFT(Key_9))) /* U+2534, XKB_KEY_bott, BOX DRAWINGS LIGHT UP AND HORIZONTAL */ \ + OP(L'┼', RALT(Key_Equals)) /* U+253c, XKB_KEY_crossinglines, BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Ecircumflex, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gbreve, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acircumflex, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_bott, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_crossinglines, RALT(Key_Equals)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_ecircumflex, RALT(Key_E)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gbreve, RALT(Key_G)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_horizlinescan5, RALT(Key_Minus)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_leftt, RALT(Key_8)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lowleftcorner, RALT(Key_7)) \ + OP(XKB_KEY_lowrightcorner, RALT(Key_0)) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_rightt, RALT(Key_9)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_topt, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_upleftcorner, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_uprightcorner, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_vertbar, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ir { +namespace ku_alt { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ku_alt +} // namespace ir +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ir/ku_ara/keymap.h b/src/kaleidoscope/host_keymap/linux/ir/ku_ara/keymap.h new file mode 100644 index 0000000000..bbba3e9991 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ir/ku_ara/keymap.h @@ -0,0 +1,590 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ir +// variant: ku_ara + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', RALT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Comma)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', RALT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', RALT(LSHIFT(Key_A))) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', RALT(LSHIFT(Key_B))) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', RALT(LSHIFT(Key_C))) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', RALT(LSHIFT(Key_D))) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', RALT(LSHIFT(Key_E))) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', RALT(LSHIFT(Key_F))) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', RALT(LSHIFT(Key_G))) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', RALT(LSHIFT(Key_H))) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', RALT(LSHIFT(Key_I))) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', RALT(LSHIFT(Key_J))) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', RALT(LSHIFT(Key_K))) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', RALT(LSHIFT(Key_L))) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', RALT(LSHIFT(Key_M))) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', RALT(LSHIFT(Key_N))) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', RALT(LSHIFT(Key_O))) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', RALT(LSHIFT(Key_P))) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', RALT(LSHIFT(Key_R))) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', RALT(LSHIFT(Key_S))) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', RALT(LSHIFT(Key_T))) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', RALT(LSHIFT(Key_U))) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', RALT(LSHIFT(Key_V))) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_Q)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', RALT(LSHIFT(Key_Y))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', RALT(LSHIFT(Key_Z))) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_LeftBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', RALT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(LSHIFT(Key_1))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', RALT(Key_A)) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', RALT(Key_B)) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', RALT(Key_C)) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', RALT(Key_D)) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', RALT(Key_E)) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', RALT(Key_F)) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', RALT(Key_G)) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', RALT(Key_H)) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', RALT(Key_I)) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', RALT(Key_J)) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', RALT(Key_K)) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', RALT(Key_L)) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', RALT(Key_M)) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', RALT(Key_N)) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', RALT(Key_O)) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', RALT(Key_P)) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', RALT(Key_R)) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', RALT(Key_S)) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', RALT(Key_T)) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', RALT(Key_U)) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', RALT(Key_V)) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', RALT(Key_Y)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', RALT(Key_Z)) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', RALT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Comma)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', RALT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', RALT(LSHIFT(Key_A))) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', RALT(LSHIFT(Key_B))) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', RALT(LSHIFT(Key_C))) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', RALT(LSHIFT(Key_D))) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', RALT(LSHIFT(Key_E))) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', RALT(LSHIFT(Key_F))) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', RALT(LSHIFT(Key_G))) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', RALT(LSHIFT(Key_H))) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', RALT(LSHIFT(Key_I))) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', RALT(LSHIFT(Key_J))) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', RALT(LSHIFT(Key_K))) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', RALT(LSHIFT(Key_L))) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', RALT(LSHIFT(Key_M))) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', RALT(LSHIFT(Key_N))) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', RALT(LSHIFT(Key_O))) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', RALT(LSHIFT(Key_P))) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', RALT(LSHIFT(Key_R))) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', RALT(LSHIFT(Key_S))) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', RALT(LSHIFT(Key_T))) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', RALT(LSHIFT(Key_U))) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', RALT(LSHIFT(Key_V))) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_Q)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', RALT(LSHIFT(Key_Y))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', RALT(LSHIFT(Key_Z))) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_LeftBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', RALT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(LSHIFT(Key_1))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', RALT(Key_A)) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', RALT(Key_B)) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', RALT(Key_C)) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', RALT(Key_D)) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', RALT(Key_E)) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', RALT(Key_F)) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', RALT(Key_G)) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', RALT(Key_H)) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', RALT(Key_I)) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', RALT(Key_J)) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', RALT(Key_K)) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', RALT(Key_L)) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', RALT(Key_M)) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', RALT(Key_N)) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', RALT(Key_O)) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', RALT(Key_P)) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', RALT(Key_R)) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', RALT(Key_S)) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', RALT(Key_T)) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', RALT(Key_U)) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', RALT(Key_V)) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', RALT(Key_Y)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', RALT(Key_Z)) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ç', RALT(LSHIFT(Key_NonUsPound))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ê', RALT(LSHIFT(Key_Semicolon))) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Î', RALT(LSHIFT(Key_Quote))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'×', RALT(LSHIFT(Key_6))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Û', RALT(LSHIFT(Key_LeftBracket))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ç', RALT(Key_NonUsPound)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ê', RALT(Key_Semicolon)) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'î', RALT(Key_Quote)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'÷', LSHIFT(Key_Backtick)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'û', RALT(Key_LeftBracket)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ş', RALT(LSHIFT(Key_RightBracket))) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', RALT(Key_RightBracket)) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'،', Key_Comma) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', Key_Semicolon) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', LSHIFT(Key_U)) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'آ', LSHIFT(Key_A)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_J)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', LSHIFT(Key_O)) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_F)) /* U+0625, XKB_KEY_Arabic_hamzaunderalef, ARABIC LETTER ALEF WITH HAMZA BELOW */ \ + OP(L'ئ', Key_U) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', Key_A) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_B) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', LSHIFT(Key_N)) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_T) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', LSHIFT(Key_P)) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_C) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', Key_I) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_X) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_D) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', LSHIFT(Key_D)) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_R) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_Z) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', LSHIFT(Key_S)) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', LSHIFT(Key_X)) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', LSHIFT(Key_Z)) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', LSHIFT(Key_T)) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', LSHIFT(Key_V)) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', LSHIFT(Key_I)) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', LSHIFT(Key_G)) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_Minus)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'ف', Key_F) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_Q) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', LSHIFT(Key_K)) /* U+0643, XKB_KEY_Arabic_kaf, ARABIC LETTER KAF */ \ + OP(L'ل', Key_L) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_M) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_N) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_H) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_W) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', LSHIFT(Key_B)) \ + OP(L'٪', RALT(LSHIFT(Key_5))) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', RALT(LSHIFT(Key_3))) \ + OP(L'پ', Key_P) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', LSHIFT(Key_C)) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ڕ', LSHIFT(Key_R)) \ + OP(L'ژ', Key_J) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ڤ', Key_V) /* U+06a4, XKB_KEY_Arabic_veh, ARABIC LETTER VEH */ \ + OP(L'ک', Key_K) /* U+06a9, XKB_KEY_Arabic_keheh, ARABIC LETTER KEHEH */ \ + OP(L'گ', Key_G) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'ڵ', LSHIFT(Key_L)) \ + OP(L'ۆ', Key_O) \ + OP(L'ی', Key_Y) /* U+06cc, XKB_KEY_Farsi_yeh, ARABIC LETTER FARSI YEH */ \ + OP(L'ێ', LSHIFT(Key_Y)) \ + OP(L'ە', Key_E) \ + OP(L'۰', RALT(Key_0)) /* U+06f0, XKB_KEY_Farsi_0, EXTENDED ARABIC-INDIC DIGIT ZERO */ \ + OP(L'۱', RALT(Key_1)) /* U+06f1, XKB_KEY_Farsi_1, EXTENDED ARABIC-INDIC DIGIT ONE */ \ + OP(L'۲', RALT(Key_2)) /* U+06f2, XKB_KEY_Farsi_2, EXTENDED ARABIC-INDIC DIGIT TWO */ \ + OP(L'۳', RALT(Key_3)) /* U+06f3, XKB_KEY_Farsi_3, EXTENDED ARABIC-INDIC DIGIT THREE */ \ + OP(L'۴', RALT(Key_4)) /* U+06f4, XKB_KEY_Farsi_4, EXTENDED ARABIC-INDIC DIGIT FOUR */ \ + OP(L'۵', RALT(Key_5)) /* U+06f5, XKB_KEY_Farsi_5, EXTENDED ARABIC-INDIC DIGIT FIVE */ \ + OP(L'۶', RALT(Key_6)) /* U+06f6, XKB_KEY_Farsi_6, EXTENDED ARABIC-INDIC DIGIT SIX */ \ + OP(L'۷', RALT(Key_7)) /* U+06f7, XKB_KEY_Farsi_7, EXTENDED ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'۸', RALT(Key_8)) /* U+06f8, XKB_KEY_Farsi_8, EXTENDED ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'۹', RALT(Key_9)) /* U+06f9, XKB_KEY_Farsi_9, EXTENDED ARABIC-INDIC DIGIT NINE */ \ + OP(L'‌', LSHIFT(Key_H)) \ + OP(L'‍', Key_Backtick) \ + OP(L'‎', RALT(LSHIFT(Key_9))) \ + OP(L'‏', RALT(LSHIFT(Key_0))) \ + OP(L'•', RALT(LSHIFT(Key_8))) /* U+2022, XKB_KEY_enfilledcircbullet, BULLET */ \ + OP(L'−', RALT(Key_Equals)) \ + OP(L'﷼', RALT(LSHIFT(Key_4))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_ain, LSHIFT(Key_I)) \ + OP(XKB_KEY_Arabic_alef, Key_A) \ + OP(XKB_KEY_Arabic_beh, Key_B) \ + OP(XKB_KEY_Arabic_comma, Key_Comma) \ + OP(XKB_KEY_Arabic_dad, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Arabic_dal, Key_D) \ + OP(XKB_KEY_Arabic_feh, Key_F) \ + OP(XKB_KEY_Arabic_gaf, Key_G) \ + OP(XKB_KEY_Arabic_ghain, LSHIFT(Key_G)) \ + OP(XKB_KEY_Arabic_ha, Key_H) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, Key_I) \ + OP(XKB_KEY_Arabic_hamza, LSHIFT(Key_U)) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_J)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, LSHIFT(Key_O)) \ + OP(XKB_KEY_Arabic_hamzaonyeh, Key_U) \ + OP(XKB_KEY_Arabic_hamzaunderalef, LSHIFT(Key_F)) \ + OP(XKB_KEY_Arabic_jeem, Key_C) \ + OP(XKB_KEY_Arabic_jeh, Key_J) \ + OP(XKB_KEY_Arabic_kaf, LSHIFT(Key_K)) \ + OP(XKB_KEY_Arabic_keheh, Key_K) \ + OP(XKB_KEY_Arabic_khah, Key_X) \ + OP(XKB_KEY_Arabic_lam, Key_L) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_A)) \ + OP(XKB_KEY_Arabic_meem, Key_M) \ + OP(XKB_KEY_Arabic_noon, Key_N) \ + OP(XKB_KEY_Arabic_peh, Key_P) \ + OP(XKB_KEY_Arabic_percent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_Arabic_qaf, Key_Q) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_R) \ + OP(XKB_KEY_Arabic_sad, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, Key_Semicolon) \ + OP(XKB_KEY_Arabic_sheen, LSHIFT(Key_S)) \ + OP(XKB_KEY_Arabic_tah, LSHIFT(Key_T)) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Arabic_tcheh, LSHIFT(Key_C)) \ + OP(XKB_KEY_Arabic_teh, Key_T) \ + OP(XKB_KEY_Arabic_tehmarbuta, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_thal, LSHIFT(Key_D)) \ + OP(XKB_KEY_Arabic_theh, LSHIFT(Key_P)) \ + OP(XKB_KEY_Arabic_veh, Key_V) \ + OP(XKB_KEY_Arabic_waw, Key_W) \ + OP(XKB_KEY_Arabic_zah, LSHIFT(Key_V)) \ + OP(XKB_KEY_Arabic_zain, Key_Z) \ + OP(XKB_KEY_B, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Ecircumflex, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Farsi_0, RALT(Key_0)) \ + OP(XKB_KEY_Farsi_1, RALT(Key_1)) \ + OP(XKB_KEY_Farsi_2, RALT(Key_2)) \ + OP(XKB_KEY_Farsi_3, RALT(Key_3)) \ + OP(XKB_KEY_Farsi_4, RALT(Key_4)) \ + OP(XKB_KEY_Farsi_5, RALT(Key_5)) \ + OP(XKB_KEY_Farsi_6, RALT(Key_6)) \ + OP(XKB_KEY_Farsi_7, RALT(Key_7)) \ + OP(XKB_KEY_Farsi_8, RALT(Key_8)) \ + OP(XKB_KEY_Farsi_9, RALT(Key_9)) \ + OP(XKB_KEY_Farsi_yeh, Key_Y) \ + OP(XKB_KEY_G, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_H, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_K, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scedilla, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_W, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_X, LSHIFT(Key_Q)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, RALT(Key_B)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketleft, Key_RightBracket) \ + OP(XKB_KEY_bracketright, Key_LeftBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, RALT(Key_C)) \ + OP(XKB_KEY_ccedilla, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, RALT(Key_Comma)) \ + OP(XKB_KEY_d, RALT(Key_D)) \ + OP(XKB_KEY_division, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, RALT(Key_E)) \ + OP(XKB_KEY_ecircumflex, RALT(Key_Semicolon)) \ + OP(XKB_KEY_enfilledcircbullet, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, RALT(Key_F)) \ + OP(XKB_KEY_g, RALT(Key_G)) \ + OP(XKB_KEY_grave, RALT(LSHIFT(Key_1))) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_h, RALT(Key_H)) \ + OP(XKB_KEY_i, RALT(Key_I)) \ + OP(XKB_KEY_icircumflex, RALT(Key_Quote)) \ + OP(XKB_KEY_j, RALT(Key_J)) \ + OP(XKB_KEY_k, RALT(Key_K)) \ + OP(XKB_KEY_l, RALT(Key_L)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, RALT(Key_M)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_n, RALT(Key_N)) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, RALT(Key_O)) \ + OP(XKB_KEY_p, RALT(Key_P)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, RALT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, RALT(Key_R)) \ + OP(XKB_KEY_s, RALT(Key_S)) \ + OP(XKB_KEY_scedilla, RALT(Key_RightBracket)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, RALT(Key_T)) \ + OP(XKB_KEY_u, RALT(Key_U)) \ + OP(XKB_KEY_ucircumflex, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_underscore, RALT(Key_Minus)) \ + OP(XKB_KEY_v, RALT(Key_V)) \ + OP(XKB_KEY_w, RALT(Key_W)) \ + OP(XKB_KEY_x, RALT(Key_X)) \ + OP(XKB_KEY_y, RALT(Key_Y)) \ + OP(XKB_KEY_z, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ir { +namespace ku_ara { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ku_ara +} // namespace ir +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ir/ku_f/keymap.h b/src/kaleidoscope/host_keymap/linux/ir/ku_f/keymap.h new file mode 100644 index 0000000000..75dcadcb0c --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ir/ku_f/keymap.h @@ -0,0 +1,548 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ir +// variant: ku_f + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Backtick) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Slash) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Minus) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_F)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_Comma)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_V)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_Y)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Q)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_O)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_R)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_Z)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_J)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_K)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_I)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_T)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_LeftBracket)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_U)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_M)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_H)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_C)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_RightBracket)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_E)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Semicolon)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_N)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_F) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_Comma) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_V) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_Y) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Q) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_O) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_R) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_Z) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_J) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_K) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_I) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_T) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_LeftBracket) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_U) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_M) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_H) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_C) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_RightBracket) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_E) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Semicolon) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_N) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Backtick) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Slash) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Minus) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_F)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_Comma)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_V)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_Y)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Q)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_O)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_R)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_Z)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_J)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_K)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_I)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_T)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_LeftBracket)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_U)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_M)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_H)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_C)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_RightBracket)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_E)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Semicolon)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_N)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_F) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_Comma) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_V) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_Y) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Q) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_O) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_R) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_Z) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_J) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_K) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_I) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_T) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_LeftBracket) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_U) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_M) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_H) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_C) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_RightBracket) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_E) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Semicolon) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_N) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Comma))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_V)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_P)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(Key_Y)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_M)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_V))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_U)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_O)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Semicolon)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_K)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Slash)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Â', RALT(LSHIFT(Key_F))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ç', LSHIFT(Key_B)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ê', LSHIFT(Key_X)) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Î', LSHIFT(Key_S)) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ô', RALT(LSHIFT(Key_T))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', RALT(LSHIFT(Key_X))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Û', LSHIFT(Key_A)) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', RALT(LSHIFT(Key_A))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'â', RALT(Key_F)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ç', Key_B) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ê', Key_X) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'î', Key_S) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ô', RALT(Key_T)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', RALT(Key_X)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_Period)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'û', Key_A) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', RALT(Key_A)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Ğ', RALT(LSHIFT(Key_E))) /* U+011e, XKB_KEY_Gbreve, LATIN CAPITAL LETTER G WITH BREVE */ \ + OP(L'ğ', RALT(Key_E)) /* U+011f, XKB_KEY_gbreve, LATIN SMALL LETTER G WITH BREVE */ \ + OP(L'İ', RALT(LSHIFT(Key_S))) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'Ş', LSHIFT(Key_Quote)) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', Key_Quote) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'“', RALT(Key_C)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_D)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'₺', RALT(Key_H)) \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_V)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_B)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_Ecircumflex, LSHIFT(Key_X)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_D)) \ + OP(XKB_KEY_F, LSHIFT(Key_Q)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_W)) \ + OP(XKB_KEY_Gbreve, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_H, LSHIFT(Key_O)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_R)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Icircumflex, LSHIFT(Key_S)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_Z)) \ + OP(XKB_KEY_K, LSHIFT(Key_J)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_K)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_I)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_T)) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_R, LSHIFT(Key_U)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_M)) \ + OP(XKB_KEY_Scedilla, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_H)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_G)) \ + OP(XKB_KEY_Ucircumflex, LSHIFT(Key_A)) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_C)) \ + OP(XKB_KEY_W, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_X, LSHIFT(Key_E)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Z, LSHIFT(Key_N)) \ + OP(XKB_KEY_a, Key_F) \ + OP(XKB_KEY_acircumflex, RALT(Key_F)) \ + OP(XKB_KEY_acute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_7)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_Comma) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_Equals)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_V) \ + OP(XKB_KEY_ccedilla, Key_B) \ + OP(XKB_KEY_cent, RALT(Key_V)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Slash) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_d, Key_Y) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_degree, RALT(Key_O)) \ + OP(XKB_KEY_division, RALT(Key_Period)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_ecircumflex, Key_X) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_Q) \ + OP(XKB_KEY_g, Key_W) \ + OP(XKB_KEY_gbreve, RALT(Key_E)) \ + OP(XKB_KEY_grave, RALT(Key_NonUsPound)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_O) \ + OP(XKB_KEY_i, Key_R) \ + OP(XKB_KEY_icircumflex, Key_S) \ + OP(XKB_KEY_j, Key_Z) \ + OP(XKB_KEY_k, Key_J) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_C)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_K) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, RALT(Key_K)) \ + OP(XKB_KEY_multiply, RALT(Key_Comma)) \ + OP(XKB_KEY_n, Key_I) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_T) \ + OP(XKB_KEY_ocircumflex, RALT(Key_T)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_X)) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Slash)) \ + OP(XKB_KEY_plus, Key_Backtick) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_LeftBracket) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_U) \ + OP(XKB_KEY_registered, RALT(Key_U)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_s, Key_M) \ + OP(XKB_KEY_scedilla, Key_Quote) \ + OP(XKB_KEY_section, RALT(Key_M)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_slash, Key_Minus) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_P)) \ + OP(XKB_KEY_t, Key_H) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_G) \ + OP(XKB_KEY_ucircumflex, Key_A) \ + OP(XKB_KEY_udiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_v, Key_C) \ + OP(XKB_KEY_w, Key_RightBracket) \ + OP(XKB_KEY_x, Key_E) \ + OP(XKB_KEY_y, Key_Semicolon) \ + OP(XKB_KEY_yen, RALT(Key_Y)) \ + OP(XKB_KEY_z, Key_N) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ir { +namespace ku_f { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ku_f +} // namespace ir +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ir/pes_keypad/keymap.h b/src/kaleidoscope/host_keymap/linux/ir/pes_keypad/keymap.h new file mode 100644 index 0000000000..8713310689 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ir/pes_keypad/keymap.h @@ -0,0 +1,447 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ir +// variant: pes_keypad + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Period)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', LSHIFT(Key_8)) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', RALT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', RALT(LSHIFT(Key_0))) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', RALT(LSHIFT(Key_1))) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', RALT(LSHIFT(Key_2))) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', RALT(LSHIFT(Key_3))) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', RALT(LSHIFT(Key_4))) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', RALT(LSHIFT(Key_5))) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', RALT(LSHIFT(Key_6))) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', RALT(LSHIFT(Key_7))) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', RALT(LSHIFT(Key_8))) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', RALT(LSHIFT(Key_9))) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Comma)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', RALT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', LSHIFT(Key_P)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_O)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', RALT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_1)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Period)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', LSHIFT(Key_8)) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', RALT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', RALT(LSHIFT(Key_0))) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', RALT(LSHIFT(Key_1))) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', RALT(LSHIFT(Key_2))) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', RALT(LSHIFT(Key_3))) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', RALT(LSHIFT(Key_4))) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', RALT(LSHIFT(Key_5))) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', RALT(LSHIFT(Key_6))) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', RALT(LSHIFT(Key_7))) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', RALT(LSHIFT(Key_8))) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', RALT(LSHIFT(Key_9))) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Comma)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', RALT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', LSHIFT(Key_P)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_O)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', RALT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_1)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', LSHIFT(Key_L)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', RALT(Key_Q)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'»', LSHIFT(Key_K)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', Key_KeypadMultiply) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', Key_KeypadDivide) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'،', LSHIFT(Key_7)) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', LSHIFT(Key_Quote)) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', LSHIFT(Key_M)) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'آ', LSHIFT(Key_H)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_G)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', LSHIFT(Key_A)) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_F)) /* U+0625, XKB_KEY_Arabic_hamzaunderalef, ARABIC LETTER ALEF WITH HAMZA BELOW */ \ + OP(L'ئ', LSHIFT(Key_S)) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', Key_H) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_F) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', LSHIFT(Key_J)) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_J) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', Key_E) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_LeftBracket) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', Key_P) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_O) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_N) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', Key_B) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_V) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_C) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', Key_A) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', Key_W) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', Key_Q) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', Key_X) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', Key_Z) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', Key_U) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', Key_Y) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_Minus)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'ف', Key_T) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_R) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', LSHIFT(Key_Z)) /* U+0643, XKB_KEY_Arabic_kaf, ARABIC LETTER KAF */ \ + OP(L'ل', Key_G) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_L) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_K) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_I) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_Comma) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', RALT(Key_D)) /* U+0649, XKB_KEY_Arabic_alefmaksura, ARABIC LETTER ALEF MAKSURA */ \ + OP(L'ي', LSHIFT(Key_D)) /* U+064a, XKB_KEY_Arabic_yeh, ARABIC LETTER YEH */ \ + OP(L'ً', LSHIFT(Key_R)) /* U+064b, XKB_KEY_Arabic_fathatan, ARABIC FATHATAN */ \ + OP(L'ٌ', LSHIFT(Key_W)) /* U+064c, XKB_KEY_Arabic_dammatan, ARABIC DAMMATAN */ \ + OP(L'ٍ', LSHIFT(Key_E)) /* U+064d, XKB_KEY_Arabic_kasratan, ARABIC KASRATAN */ \ + OP(L'َ', LSHIFT(Key_U)) /* U+064e, XKB_KEY_Arabic_fatha, ARABIC FATHA */ \ + OP(L'ُ', LSHIFT(Key_T)) /* U+064f, XKB_KEY_Arabic_damma, ARABIC DAMMA */ \ + OP(L'ِ', LSHIFT(Key_Y)) /* U+0650, XKB_KEY_Arabic_kasra, ARABIC KASRA */ \ + OP(L'ّ', LSHIFT(Key_I)) /* U+0651, XKB_KEY_Arabic_shadda, ARABIC SHADDA */ \ + OP(L'ْ', LSHIFT(Key_Q)) /* U+0652, XKB_KEY_Arabic_sukun, ARABIC SUKUN */ \ + OP(L'ٓ', LSHIFT(Key_X)) /* U+0653, XKB_KEY_Arabic_madda_above, ARABIC MADDAH ABOVE */ \ + OP(L'ٔ', LSHIFT(Key_N)) /* U+0654, XKB_KEY_Arabic_hamza_above, ARABIC HAMZA ABOVE */ \ + OP(L'ٕ', RALT(Key_N)) /* U+0655, XKB_KEY_Arabic_hamza_below, ARABIC HAMZA BELOW */ \ + OP(L'ٖ', RALT(Key_V)) \ + OP(L'٪', LSHIFT(Key_5)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', LSHIFT(Key_3)) \ + OP(L'٬', LSHIFT(Key_2)) \ + OP(L'ٰ', LSHIFT(Key_V)) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٱ', RALT(Key_H)) \ + OP(L'پ', Key_M) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', Key_RightBracket) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ژ', LSHIFT(Key_C)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ک', Key_Semicolon) /* U+06a9, XKB_KEY_Arabic_keheh, ARABIC LETTER KEHEH */ \ + OP(L'گ', Key_Quote) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'ی', Key_D) /* U+06cc, XKB_KEY_Farsi_yeh, ARABIC LETTER FARSI YEH */ \ + OP(L'۰', Key_0) /* U+06f0, XKB_KEY_Farsi_0, EXTENDED ARABIC-INDIC DIGIT ZERO */ \ + OP(L'۱', Key_1) /* U+06f1, XKB_KEY_Farsi_1, EXTENDED ARABIC-INDIC DIGIT ONE */ \ + OP(L'۲', Key_2) /* U+06f2, XKB_KEY_Farsi_2, EXTENDED ARABIC-INDIC DIGIT TWO */ \ + OP(L'۳', Key_3) /* U+06f3, XKB_KEY_Farsi_3, EXTENDED ARABIC-INDIC DIGIT THREE */ \ + OP(L'۴', Key_4) /* U+06f4, XKB_KEY_Farsi_4, EXTENDED ARABIC-INDIC DIGIT FOUR */ \ + OP(L'۵', Key_5) /* U+06f5, XKB_KEY_Farsi_5, EXTENDED ARABIC-INDIC DIGIT FIVE */ \ + OP(L'۶', Key_6) /* U+06f6, XKB_KEY_Farsi_6, EXTENDED ARABIC-INDIC DIGIT SIX */ \ + OP(L'۷', Key_7) /* U+06f7, XKB_KEY_Farsi_7, EXTENDED ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'۸', Key_8) /* U+06f8, XKB_KEY_Farsi_8, EXTENDED ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'۹', Key_9) /* U+06f9, XKB_KEY_Farsi_9, EXTENDED ARABIC-INDIC DIGIT NINE */ \ + OP(L'‌', LSHIFT(Key_B)) \ + OP(L'‍', Key_Backtick) \ + OP(L'‎', RALT(Key_9)) \ + OP(L'‏', RALT(Key_0)) \ + OP(L'‐', RALT(Key_NonUsPound)) \ + OP(L'•', RALT(Key_8)) /* U+2022, XKB_KEY_enfilledcircbullet, BULLET */ \ + OP(L'…', RALT(Key_M)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‪', RALT(Key_LeftBracket)) \ + OP(L'‫', RALT(Key_RightBracket)) \ + OP(L'‬', RALT(Key_P)) \ + OP(L'‭', RALT(Key_I)) \ + OP(L'‮', RALT(Key_O)) \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) \ + OP(L'€', RALT(Key_E)) \ + OP(L'−', Key_KeypadSubtract) \ + OP(L'﴾', RALT(Key_K)) \ + OP(L'﴿', RALT(Key_L)) \ + OP(L'﷼', LSHIFT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_1, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_2, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_3, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_4, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_5, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_6, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_7, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_8, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_9, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_ain, Key_U) \ + OP(XKB_KEY_Arabic_alef, Key_H) \ + OP(XKB_KEY_Arabic_alefmaksura, RALT(Key_D)) \ + OP(XKB_KEY_Arabic_beh, Key_F) \ + OP(XKB_KEY_Arabic_comma, LSHIFT(Key_7)) \ + OP(XKB_KEY_Arabic_dad, Key_Q) \ + OP(XKB_KEY_Arabic_dal, Key_N) \ + OP(XKB_KEY_Arabic_damma, LSHIFT(Key_T)) \ + OP(XKB_KEY_Arabic_dammatan, LSHIFT(Key_W)) \ + OP(XKB_KEY_Arabic_fatha, LSHIFT(Key_U)) \ + OP(XKB_KEY_Arabic_fathatan, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_feh, Key_T) \ + OP(XKB_KEY_Arabic_gaf, Key_Quote) \ + OP(XKB_KEY_Arabic_ghain, Key_Y) \ + OP(XKB_KEY_Arabic_ha, Key_I) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, Key_P) \ + OP(XKB_KEY_Arabic_hamza, LSHIFT(Key_M)) \ + OP(XKB_KEY_Arabic_hamza_above, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_hamza_below, RALT(Key_N)) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_G)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, LSHIFT(Key_A)) \ + OP(XKB_KEY_Arabic_hamzaonyeh, LSHIFT(Key_S)) \ + OP(XKB_KEY_Arabic_hamzaunderalef, LSHIFT(Key_F)) \ + OP(XKB_KEY_Arabic_jeem, Key_LeftBracket) \ + OP(XKB_KEY_Arabic_jeh, LSHIFT(Key_C)) \ + OP(XKB_KEY_Arabic_kaf, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Arabic_kasra, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Arabic_kasratan, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_keheh, Key_Semicolon) \ + OP(XKB_KEY_Arabic_khah, Key_O) \ + OP(XKB_KEY_Arabic_lam, Key_G) \ + OP(XKB_KEY_Arabic_madda_above, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_meem, Key_L) \ + OP(XKB_KEY_Arabic_noon, Key_K) \ + OP(XKB_KEY_Arabic_peh, Key_M) \ + OP(XKB_KEY_Arabic_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_Arabic_qaf, Key_R) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_V) \ + OP(XKB_KEY_Arabic_sad, Key_W) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Arabic_shadda, LSHIFT(Key_I)) \ + OP(XKB_KEY_Arabic_sheen, Key_A) \ + OP(XKB_KEY_Arabic_sukun, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Arabic_superscript_alef, LSHIFT(Key_V)) \ + OP(XKB_KEY_Arabic_tah, Key_X) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Arabic_tcheh, Key_RightBracket) \ + OP(XKB_KEY_Arabic_teh, Key_J) \ + OP(XKB_KEY_Arabic_tehmarbuta, LSHIFT(Key_J)) \ + OP(XKB_KEY_Arabic_thal, Key_B) \ + OP(XKB_KEY_Arabic_theh, Key_E) \ + OP(XKB_KEY_Arabic_waw, Key_Comma) \ + OP(XKB_KEY_Arabic_yeh, LSHIFT(Key_D)) \ + OP(XKB_KEY_Arabic_zah, Key_Z) \ + OP(XKB_KEY_Arabic_zain, Key_C) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Farsi_0, Key_0) \ + OP(XKB_KEY_Farsi_1, Key_1) \ + OP(XKB_KEY_Farsi_2, Key_2) \ + OP(XKB_KEY_Farsi_3, Key_3) \ + OP(XKB_KEY_Farsi_4, Key_4) \ + OP(XKB_KEY_Farsi_5, Key_5) \ + OP(XKB_KEY_Farsi_6, Key_6) \ + OP(XKB_KEY_Farsi_7, Key_7) \ + OP(XKB_KEY_Farsi_8, Key_8) \ + OP(XKB_KEY_Farsi_9, Key_9) \ + OP(XKB_KEY_Farsi_yeh, Key_D) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_Add, RALT(Key_KeypadAdd)) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, RALT(Key_KeypadDivide)) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, RALT(Key_KeypadMultiply)) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, RALT(Key_KeypadSubtract)) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LSHIFT(Key_KeypadMultiply)) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LSHIFT(Key_KeypadAdd)) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LSHIFT(Key_KeypadSubtract)) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LSHIFT(Key_KeypadDivide)) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, RALT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Period)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_P)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_O)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, RALT(Key_Comma)) \ + OP(XKB_KEY_degree, RALT(Key_Q)) \ + OP(XKB_KEY_division, Key_KeypadDivide) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_ellipsis, RALT(Key_M)) \ + OP(XKB_KEY_enfilledcircbullet, RALT(Key_8)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, RALT(Key_1)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_guillemotleft, LSHIFT(Key_L)) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_K)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, Key_KeypadMultiply) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, RALT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_KeypadAdd) \ + OP(XKB_KEY_question, RALT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, RALT(Key_Quote)) \ + OP(XKB_KEY_semicolon, RALT(Key_Semicolon)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, RALT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ir { +namespace pes_keypad { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace pes_keypad +} // namespace ir +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ir/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/ir/standard/keymap.h new file mode 100644 index 0000000000..76bbb1e841 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ir/standard/keymap.h @@ -0,0 +1,458 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ir +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Period)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', RALT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Comma)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', RALT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', LSHIFT(Key_P)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_O)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', RALT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_1)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Period)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', RALT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Comma)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', RALT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', LSHIFT(Key_P)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_O)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', RALT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_1)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', LSHIFT(Key_L)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', RALT(Key_Q)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'»', LSHIFT(Key_K)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', LSHIFT(Key_6)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', LSHIFT(Key_Backtick)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'،', LSHIFT(Key_7)) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', LSHIFT(Key_Quote)) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', LSHIFT(Key_M)) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'آ', LSHIFT(Key_H)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_G)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', LSHIFT(Key_A)) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_F)) /* U+0625, XKB_KEY_Arabic_hamzaunderalef, ARABIC LETTER ALEF WITH HAMZA BELOW */ \ + OP(L'ئ', LSHIFT(Key_S)) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', Key_H) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_F) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', LSHIFT(Key_J)) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_J) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', Key_E) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_LeftBracket) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', Key_P) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_O) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_N) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', Key_B) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_V) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_C) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', Key_A) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', Key_W) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', Key_Q) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', Key_X) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', Key_Z) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', Key_U) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', Key_Y) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_Minus)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'ف', Key_T) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_R) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', LSHIFT(Key_Z)) /* U+0643, XKB_KEY_Arabic_kaf, ARABIC LETTER KAF */ \ + OP(L'ل', Key_G) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_L) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_K) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_I) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_Comma) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', RALT(Key_D)) /* U+0649, XKB_KEY_Arabic_alefmaksura, ARABIC LETTER ALEF MAKSURA */ \ + OP(L'ي', LSHIFT(Key_D)) /* U+064a, XKB_KEY_Arabic_yeh, ARABIC LETTER YEH */ \ + OP(L'ً', LSHIFT(Key_R)) /* U+064b, XKB_KEY_Arabic_fathatan, ARABIC FATHATAN */ \ + OP(L'ٌ', LSHIFT(Key_W)) /* U+064c, XKB_KEY_Arabic_dammatan, ARABIC DAMMATAN */ \ + OP(L'ٍ', LSHIFT(Key_E)) /* U+064d, XKB_KEY_Arabic_kasratan, ARABIC KASRATAN */ \ + OP(L'َ', LSHIFT(Key_U)) /* U+064e, XKB_KEY_Arabic_fatha, ARABIC FATHA */ \ + OP(L'ُ', LSHIFT(Key_T)) /* U+064f, XKB_KEY_Arabic_damma, ARABIC DAMMA */ \ + OP(L'ِ', LSHIFT(Key_Y)) /* U+0650, XKB_KEY_Arabic_kasra, ARABIC KASRA */ \ + OP(L'ّ', LSHIFT(Key_I)) /* U+0651, XKB_KEY_Arabic_shadda, ARABIC SHADDA */ \ + OP(L'ْ', LSHIFT(Key_Q)) /* U+0652, XKB_KEY_Arabic_sukun, ARABIC SUKUN */ \ + OP(L'ٓ', LSHIFT(Key_X)) /* U+0653, XKB_KEY_Arabic_madda_above, ARABIC MADDAH ABOVE */ \ + OP(L'ٔ', LSHIFT(Key_N)) /* U+0654, XKB_KEY_Arabic_hamza_above, ARABIC HAMZA ABOVE */ \ + OP(L'ٕ', RALT(Key_N)) /* U+0655, XKB_KEY_Arabic_hamza_below, ARABIC HAMZA BELOW */ \ + OP(L'ٖ', RALT(Key_V)) \ + OP(L'٪', LSHIFT(Key_5)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', LSHIFT(Key_3)) \ + OP(L'٬', LSHIFT(Key_2)) \ + OP(L'ٰ', LSHIFT(Key_V)) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٱ', RALT(Key_H)) \ + OP(L'پ', Key_M) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', Key_RightBracket) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ژ', LSHIFT(Key_C)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ک', Key_Semicolon) /* U+06a9, XKB_KEY_Arabic_keheh, ARABIC LETTER KEHEH */ \ + OP(L'گ', Key_Quote) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'ی', Key_D) /* U+06cc, XKB_KEY_Farsi_yeh, ARABIC LETTER FARSI YEH */ \ + OP(L'۰', Key_0) /* U+06f0, XKB_KEY_Farsi_0, EXTENDED ARABIC-INDIC DIGIT ZERO */ \ + OP(L'۱', Key_1) /* U+06f1, XKB_KEY_Farsi_1, EXTENDED ARABIC-INDIC DIGIT ONE */ \ + OP(L'۲', Key_2) /* U+06f2, XKB_KEY_Farsi_2, EXTENDED ARABIC-INDIC DIGIT TWO */ \ + OP(L'۳', Key_3) /* U+06f3, XKB_KEY_Farsi_3, EXTENDED ARABIC-INDIC DIGIT THREE */ \ + OP(L'۴', Key_4) /* U+06f4, XKB_KEY_Farsi_4, EXTENDED ARABIC-INDIC DIGIT FOUR */ \ + OP(L'۵', Key_5) /* U+06f5, XKB_KEY_Farsi_5, EXTENDED ARABIC-INDIC DIGIT FIVE */ \ + OP(L'۶', Key_6) /* U+06f6, XKB_KEY_Farsi_6, EXTENDED ARABIC-INDIC DIGIT SIX */ \ + OP(L'۷', Key_7) /* U+06f7, XKB_KEY_Farsi_7, EXTENDED ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'۸', Key_8) /* U+06f8, XKB_KEY_Farsi_8, EXTENDED ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'۹', Key_9) /* U+06f9, XKB_KEY_Farsi_9, EXTENDED ARABIC-INDIC DIGIT NINE */ \ + OP(L'‌', LSHIFT(Key_B)) \ + OP(L'‍', Key_Backtick) \ + OP(L'‎', RALT(Key_9)) \ + OP(L'‏', RALT(Key_0)) \ + OP(L'‐', RALT(Key_NonUsPound)) \ + OP(L'•', RALT(Key_8)) /* U+2022, XKB_KEY_enfilledcircbullet, BULLET */ \ + OP(L'…', RALT(Key_M)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‪', RALT(Key_LeftBracket)) \ + OP(L'‫', RALT(Key_RightBracket)) \ + OP(L'‬', RALT(Key_P)) \ + OP(L'‭', RALT(Key_I)) \ + OP(L'‮', RALT(Key_O)) \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) \ + OP(L'€', RALT(Key_E)) \ + OP(L'−', RALT(Key_Equals)) \ + OP(L'﴾', RALT(Key_K)) \ + OP(L'﴿', RALT(Key_L)) \ + OP(L'﷼', LSHIFT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_1, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_2, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_3, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_4, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_5, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_6, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_7, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_8, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_9, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_ain, Key_U) \ + OP(XKB_KEY_Arabic_alef, Key_H) \ + OP(XKB_KEY_Arabic_alefmaksura, RALT(Key_D)) \ + OP(XKB_KEY_Arabic_beh, Key_F) \ + OP(XKB_KEY_Arabic_comma, LSHIFT(Key_7)) \ + OP(XKB_KEY_Arabic_dad, Key_Q) \ + OP(XKB_KEY_Arabic_dal, Key_N) \ + OP(XKB_KEY_Arabic_damma, LSHIFT(Key_T)) \ + OP(XKB_KEY_Arabic_dammatan, LSHIFT(Key_W)) \ + OP(XKB_KEY_Arabic_fatha, LSHIFT(Key_U)) \ + OP(XKB_KEY_Arabic_fathatan, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_feh, Key_T) \ + OP(XKB_KEY_Arabic_gaf, Key_Quote) \ + OP(XKB_KEY_Arabic_ghain, Key_Y) \ + OP(XKB_KEY_Arabic_ha, Key_I) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, Key_P) \ + OP(XKB_KEY_Arabic_hamza, LSHIFT(Key_M)) \ + OP(XKB_KEY_Arabic_hamza_above, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_hamza_below, RALT(Key_N)) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_G)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, LSHIFT(Key_A)) \ + OP(XKB_KEY_Arabic_hamzaonyeh, LSHIFT(Key_S)) \ + OP(XKB_KEY_Arabic_hamzaunderalef, LSHIFT(Key_F)) \ + OP(XKB_KEY_Arabic_jeem, Key_LeftBracket) \ + OP(XKB_KEY_Arabic_jeh, LSHIFT(Key_C)) \ + OP(XKB_KEY_Arabic_kaf, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Arabic_kasra, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Arabic_kasratan, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_keheh, Key_Semicolon) \ + OP(XKB_KEY_Arabic_khah, Key_O) \ + OP(XKB_KEY_Arabic_lam, Key_G) \ + OP(XKB_KEY_Arabic_madda_above, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_meem, Key_L) \ + OP(XKB_KEY_Arabic_noon, Key_K) \ + OP(XKB_KEY_Arabic_peh, Key_M) \ + OP(XKB_KEY_Arabic_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_Arabic_qaf, Key_R) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_V) \ + OP(XKB_KEY_Arabic_sad, Key_W) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Arabic_shadda, LSHIFT(Key_I)) \ + OP(XKB_KEY_Arabic_sheen, Key_A) \ + OP(XKB_KEY_Arabic_sukun, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Arabic_superscript_alef, LSHIFT(Key_V)) \ + OP(XKB_KEY_Arabic_tah, Key_X) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Arabic_tcheh, Key_RightBracket) \ + OP(XKB_KEY_Arabic_teh, Key_J) \ + OP(XKB_KEY_Arabic_tehmarbuta, LSHIFT(Key_J)) \ + OP(XKB_KEY_Arabic_thal, Key_B) \ + OP(XKB_KEY_Arabic_theh, Key_E) \ + OP(XKB_KEY_Arabic_waw, Key_Comma) \ + OP(XKB_KEY_Arabic_yeh, LSHIFT(Key_D)) \ + OP(XKB_KEY_Arabic_zah, Key_Z) \ + OP(XKB_KEY_Arabic_zain, Key_C) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Farsi_0, Key_0) \ + OP(XKB_KEY_Farsi_1, Key_1) \ + OP(XKB_KEY_Farsi_2, Key_2) \ + OP(XKB_KEY_Farsi_3, Key_3) \ + OP(XKB_KEY_Farsi_4, Key_4) \ + OP(XKB_KEY_Farsi_5, Key_5) \ + OP(XKB_KEY_Farsi_6, Key_6) \ + OP(XKB_KEY_Farsi_7, Key_7) \ + OP(XKB_KEY_Farsi_8, Key_8) \ + OP(XKB_KEY_Farsi_9, Key_9) \ + OP(XKB_KEY_Farsi_yeh, Key_D) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, RALT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Period)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_P)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_O)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, RALT(Key_Comma)) \ + OP(XKB_KEY_degree, RALT(Key_Q)) \ + OP(XKB_KEY_division, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_ellipsis, RALT(Key_M)) \ + OP(XKB_KEY_enfilledcircbullet, RALT(Key_8)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, RALT(Key_1)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_guillemotleft, LSHIFT(Key_L)) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_K)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, LSHIFT(Key_6)) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, RALT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, RALT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, RALT(Key_Quote)) \ + OP(XKB_KEY_semicolon, RALT(Key_Semicolon)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, RALT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ir { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace ir +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/is/Sundeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/is/Sundeadkeys/keymap.h new file mode 100644 index 0000000000..0090622bbd --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/is/Sundeadkeys/keymap.h @@ -0,0 +1,567 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: is +// variant: Sundeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', LSHIFT(Key_NonUsPound)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ö', LSHIFT(Key_Minus)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', LSHIFT(Key_Slash)) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ö', Key_Minus) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', Key_Slash) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_D)) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, LSHIFT(Key_Slash)) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_Backtick) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Minus) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, Key_Slash) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace is { +namespace Sundeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace Sundeadkeys +} // namespace is +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/is/dvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/is/dvorak/keymap.h new file mode 100644 index 0000000000..19f3bdb38d --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/is/dvorak/keymap.h @@ -0,0 +1,479 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: is +// variant: dvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'·', RALT(LSHIFT(Key_E))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'Æ', RALT(LSHIFT(Key_Semicolon))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_H))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', RALT(LSHIFT(Key_S))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_Slash))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_N)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_Semicolon)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_H)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', RALT(Key_S)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_Slash)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ẞ', RALT(LSHIFT(Key_N))) \ + OP(L'–', RALT(Key_Quote)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Quote))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', RALT(LSHIFT(Key_LeftBracket))) \ + OP(L'„', RALT(Key_LeftBracket)) \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_H))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_Semicolon)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Q) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, Key_Minus) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_colon, LSHIFT(Key_Z)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_E)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Q)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_W))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_W)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Q))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Z))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_9)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_Z)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_endash, RALT(Key_Quote)) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_eth, RALT(Key_H)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_odiaeresis, RALT(Key_S)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_plus, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Q)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_semicolon, Key_Z) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_N)) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_thorn, RALT(Key_Slash)) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace is { +namespace dvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak +} // namespace is +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/is/mac/keymap.h b/src/kaleidoscope/host_keymap/linux/is/mac/keymap.h new file mode 100644 index 0000000000..137df930db --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/is/mac/keymap.h @@ -0,0 +1,580 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: is +// variant: mac + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_RightBracket) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_NonUsPound) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_Backtick) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Backtick)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_RightBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_H)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_RightBracket) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_NonUsPound) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_Backtick) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Backtick)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_RightBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_H)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_4)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(Key_Y)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', RALT(LSHIFT(Key_W))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_G)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_I))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(LSHIFT(Key_Comma))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_K)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_F))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', Key_NonUsBackslashAndPipe) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_NonUsPound))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_Q))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_RightBracket))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¸', RALT(LSHIFT(Key_H))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_O))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_Period))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(LSHIFT(Key_E))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Å', RALT(LSHIFT(Key_A))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', LSHIFT(Key_Semicolon)) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', LSHIFT(Key_LeftBracket)) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Minus)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'Ø', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', LSHIFT(Key_Slash)) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'å', RALT(Key_A)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', Key_Semicolon) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', Key_LeftBracket) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Minus) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_7))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_NonUsBackslashAndPipe)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', Key_Slash) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ı', RALT(Key_I)) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Œ', RALT(LSHIFT(Key_Semicolon))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_Semicolon)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'ƒ', RALT(Key_F)) /* U+0192, XKB_KEY_function, LATIN SMALL LETTER F WITH HOOK */ \ + OP(L'ˇ', RALT(LSHIFT(Key_L))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_G))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_S))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˚', RALT(LSHIFT(Key_D))) \ + OP(L'˛', RALT(LSHIFT(Key_K))) \ + OP(L'˝', RALT(LSHIFT(Key_J))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Π', RALT(LSHIFT(Key_P))) /* U+03a0, XKB_KEY_Greek_PI, GREEK CAPITAL LETTER PI */ \ + OP(L'Ω', RALT(Key_Z)) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'π', RALT(Key_P)) /* U+03c0, XKB_KEY_Greek_pi, GREEK SMALL LETTER PI */ \ + OP(L'–', RALT(Key_Equals)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Equals))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_Quote))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_Slash)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_LeftBracket))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_Slash))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_LeftBracket)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'•', RALT(LSHIFT(Key_T))) \ + OP(L'…', RALT(Key_L)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‰', RALT(Key_5)) \ + OP(L'⁄', RALT(LSHIFT(Key_6))) \ + OP(L'€', RALT(Key_E)) \ + OP(L'™', RALT(Key_3)) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'∂', RALT(Key_D)) /* U+2202, XKB_KEY_partialderivative, PARTIAL DIFFERENTIAL */ \ + OP(L'∆', RALT(Key_J)) \ + OP(L'∑', RALT(Key_W)) \ + OP(L'√', RALT(Key_V)) /* U+221a, XKB_KEY_radical, SQUARE ROOT */ \ + OP(L'∞', RALT(LSHIFT(Key_5))) /* U+221e, XKB_KEY_infinity, INFINITY */ \ + OP(L'∫', RALT(Key_B)) /* U+222b, XKB_KEY_integral, INTEGRAL */ \ + OP(L'≈', RALT(LSHIFT(Key_0))) /* U+2248, XKB_KEY_approxeq, ALMOST EQUAL TO */ \ + OP(L'≠', RALT(LSHIFT(Key_Minus))) \ + OP(L'≤', RALT(Key_Comma)) /* U+2264, XKB_KEY_lessthanequal, LESS-THAN OR EQUAL TO */ \ + OP(L'≥', RALT(Key_Period)) /* U+2265, XKB_KEY_greaterthanequal, GREATER-THAN OR EQUAL TO */ \ + OP(L'◊', RALT(LSHIFT(Key_V))) \ + OP(L'', RALT(LSHIFT(Key_Backtick))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, LSHIFT(Key_LeftBracket)) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(Key_Z)) \ + OP(XKB_KEY_Greek_PI, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Greek_pi, RALT(Key_P)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, LSHIFT(Key_Slash)) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_ae, Key_Semicolon) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_RightBracket) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_approxeq, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_aring, RALT(Key_A)) \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_H)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_cent, RALT(Key_4)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_G)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_O)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_U)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_N)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_ellipsis, RALT(Key_L)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_endash, RALT(Key_Equals)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, Key_LeftBracket) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_function, RALT(Key_F)) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_NonUsPound)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_greaterthanequal, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(Key_I)) \ + OP(XKB_KEY_infinity, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_integral, RALT(Key_B)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_less, Key_Backtick) \ + OP(XKB_KEY_lessthanequal, RALT(Key_Comma)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_K)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Minus) \ + OP(XKB_KEY_oe, RALT(Key_Semicolon)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_oslash, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_partialderivative, RALT(Key_D)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_plus, Key_NonUsPound) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_radical, RALT(Key_V)) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_Slash)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, Key_Slash) \ + OP(XKB_KEY_trademark, RALT(Key_3)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_Y)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace is { +namespace mac { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mac +} // namespace is +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/is/mac_legacy/keymap.h b/src/kaleidoscope/host_keymap/linux/is/mac_legacy/keymap.h new file mode 100644 index 0000000000..3318feb6a6 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/is/mac_legacy/keymap.h @@ -0,0 +1,564 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: is +// variant: mac_legacy + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_RightBracket) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_NonUsPound) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_RightBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_7)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(LSHIFT(Key_8))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_H)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(LSHIFT(Key_9))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_X)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_RightBracket) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_NonUsPound) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_RightBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_7)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(LSHIFT(Key_8))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_H)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(LSHIFT(Key_9))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_X)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_4)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', Key_Backtick) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(Key_Y)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_G)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_I))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(LSHIFT(Key_Comma))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_K)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_F))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', RALT(Key_T)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_NonUsPound))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_Q)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_RightBracket))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_O))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_Period))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_RightBracket)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Å', RALT(LSHIFT(Key_A))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', LSHIFT(Key_Semicolon)) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', LSHIFT(Key_LeftBracket)) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Minus)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'Ø', RALT(LSHIFT(Key_Minus))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', LSHIFT(Key_Slash)) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'å', RALT(Key_A)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', Key_Semicolon) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', Key_LeftBracket) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Minus) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_7))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_Minus)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', Key_Slash) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ı', RALT(Key_I)) \ + OP(L'Œ', RALT(LSHIFT(Key_Semicolon))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_Semicolon)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'ƒ', RALT(Key_F)) \ + OP(L'ˇ', RALT(LSHIFT(Key_L))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_G))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_S))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˚', RALT(LSHIFT(Key_D))) \ + OP(L'˝', RALT(LSHIFT(Key_J))) \ + OP(L'Π', RALT(LSHIFT(Key_P))) /* U+03a0, XKB_KEY_Greek_PI, GREEK CAPITAL LETTER PI */ \ + OP(L'Ω', RALT(Key_Z)) \ + OP(L'π', RALT(Key_P)) /* U+03c0, XKB_KEY_Greek_pi, GREEK SMALL LETTER PI */ \ + OP(L'–', RALT(Key_Equals)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Equals))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_Quote))) \ + OP(L'’', RALT(Key_Slash)) \ + OP(L'‚', RALT(Key_Quote)) \ + OP(L'“', RALT(LSHIFT(Key_LeftBracket))) \ + OP(L'”', RALT(LSHIFT(Key_Slash))) \ + OP(L'„', RALT(Key_LeftBracket)) \ + OP(L'•', RALT(Key_NonUsPound)) \ + OP(L'…', RALT(Key_L)) \ + OP(L'‰', RALT(Key_5)) \ + OP(L'⁄', RALT(LSHIFT(Key_6))) \ + OP(L'€', RALT(LSHIFT(Key_4))) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(Key_3)) \ + OP(L'∂', RALT(Key_D)) /* U+2202, XKB_KEY_partdifferential, PARTIAL DIFFERENTIAL */ \ + OP(L'∆', RALT(Key_J)) \ + OP(L'∑', RALT(Key_W)) \ + OP(L'√', RALT(Key_V)) /* U+221a, XKB_KEY_squareroot, SQUARE ROOT */ \ + OP(L'∞', RALT(LSHIFT(Key_5))) /* U+221e, XKB_KEY_infinity, INFINITY */ \ + OP(L'∫', RALT(Key_B)) \ + OP(L'≈', RALT(LSHIFT(Key_0))) /* U+2248, XKB_KEY_approxeq, ALMOST EQUAL TO */ \ + OP(L'≠', RALT(Key_0)) \ + OP(L'≤', RALT(Key_Comma)) /* U+2264, XKB_KEY_lessthanequal, LESS-THAN OR EQUAL TO */ \ + OP(L'≥', RALT(Key_Period)) /* U+2265, XKB_KEY_greaterthanequal, GREATER-THAN OR EQUAL TO */ \ + OP(L'◊', RALT(LSHIFT(Key_V))) \ + OP(L'', RALT(Key_Backtick)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, LSHIFT(Key_LeftBracket)) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_PI, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Greek_pi, RALT(Key_P)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, LSHIFT(Key_Slash)) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_ae, Key_Semicolon) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_RightBracket) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_approxeq, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_aring, RALT(Key_A)) \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(Key_X)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_7)) \ + OP(XKB_KEY_bar, RALT(Key_H)) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_braceright, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(Key_4)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_G)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_O)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_U)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_E)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_N)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_T)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_endash, RALT(Key_Equals)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, Key_LeftBracket) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_greaterthanequal, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_infinity, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lessthanequal, RALT(Key_Comma)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_K)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Minus) \ + OP(XKB_KEY_oe, RALT(Key_Semicolon)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_oslash, RALT(Key_Minus)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_Q)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_partdifferential, RALT(Key_D)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_plus, Key_NonUsPound) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_questiondown, RALT(Key_RightBracket)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_squareroot, RALT(Key_V)) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, Key_Backtick) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, Key_Slash) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_Y)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace is { +namespace mac_legacy { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mac_legacy +} // namespace is +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/is/nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/is/nodeadkeys/keymap.h new file mode 100644 index 0000000000..873a43694c --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/is/nodeadkeys/keymap.h @@ -0,0 +1,579 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: is +// variant: nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Equals) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Equals) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_Backtick) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(Key_LeftBracket)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_RightBracket))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Semicolon)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¸', RALT(Key_Equals)) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ö', LSHIFT(Key_Minus)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ü', LSHIFT(Key_LeftBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', LSHIFT(Key_Slash)) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ö', Key_Minus) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', Key_LeftBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', Key_Slash) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'˙', RALT(LSHIFT(Key_Slash))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_D)) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, LSHIFT(Key_Slash)) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_acute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Equals) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_Backtick) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cedilla, RALT(Key_Equals)) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_diaeresis, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Minus) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, Key_Slash) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace is { +namespace nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace nodeadkeys +} // namespace is +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/is/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/is/standard/keymap.h new file mode 100644 index 0000000000..2ff33bc680 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/is/standard/keymap.h @@ -0,0 +1,585 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: is +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_RightBracket) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_NonUsPound) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_RightBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_Semicolon)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_RightBracket) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_NonUsPound) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_RightBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_Semicolon)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_4))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'­', RALT(LSHIFT(Key_Backtick))) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', LSHIFT(Key_Semicolon)) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', LSHIFT(Key_LeftBracket)) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Minus)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', LSHIFT(Key_Slash)) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', Key_Semicolon) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', Key_LeftBracket) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Minus) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', Key_Slash) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_D)) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, LSHIFT(Key_LeftBracket)) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, LSHIFT(Key_Slash)) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, Key_Semicolon) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_RightBracket) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_Semicolon)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, Key_Backtick) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, Key_LeftBracket) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_NonUsPound)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_hyphen, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Minus) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_NonUsPound) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, Key_Slash) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace is { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace is +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/it/fur/keymap.h b/src/kaleidoscope/host_keymap/linux/it/fur/keymap.h new file mode 100644 index 0000000000..52ca31d0a1 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/it/fur/keymap.h @@ -0,0 +1,587 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: it +// variant: fur + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_Quote)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_Equals)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Minus)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_Quote)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_Equals)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Minus)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', LSHIFT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_Backtick))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_NonUsPound)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Quote)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(LSHIFT(Key_M))) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(LSHIFT(Key_5))) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Â', RALT(LSHIFT(Key_A))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ê', RALT(LSHIFT(Key_E))) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ô', RALT(LSHIFT(Key_O))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_Quote) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'â', RALT(Key_A)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ç', LSHIFT(Key_Semicolon)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_LeftBracket) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', LSHIFT(Key_LeftBracket)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ê', RALT(Key_E)) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'ì', Key_Equals) /* U+00ec, XKB_KEY_igrave, LATIN SMALL LETTER I WITH GRAVE */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ò', Key_Semicolon) /* U+00f2, XKB_KEY_ograve, LATIN SMALL LETTER O WITH GRAVE */ \ + OP(L'ô', RALT(Key_O)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'÷', RALT(LSHIFT(Key_Slash))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ù', Key_NonUsPound) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'û', RALT(Key_U)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'ᵀ', RALT(LSHIFT(Key_T))) \ + OP(L'ᵉ', RALT(LSHIFT(Key_3))) \ + OP(L'ᵐ', RALT(Key_M)) \ + OP(L'ᵗ', RALT(Key_T)) \ + OP(L'ᶜ', RALT(Key_C)) \ + OP(L'ᶠ', RALT(Key_F)) \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'ⁿ', RALT(Key_N)) \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_4))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Ecircumflex, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acircumflex, RALT(Key_A)) \ + OP(XKB_KEY_agrave, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_asciitilde, RALT(Key_Equals)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_Backtick) \ + OP(XKB_KEY_bar, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Comma)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_2))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Slash)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_ecircumflex, RALT(Key_E)) \ + OP(XKB_KEY_egrave, Key_LeftBracket) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Minus)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_igrave, Key_Equals) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, RALT(Key_Quote)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, RALT(Key_O)) \ + OP(XKB_KEY_ograve, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onehalf, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, RALT(Key_U)) \ + OP(XKB_KEY_ugrave, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace it { +namespace fur { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace fur +} // namespace it +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/it/geo/keymap.h b/src/kaleidoscope/host_keymap/linux/it/geo/keymap.h new file mode 100644 index 0000000000..550f940c79 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/it/geo/keymap.h @@ -0,0 +1,550 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: it +// variant: geo + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_Quote)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_Equals)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Minus)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_Quote)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_Equals)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Minus)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_E))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_Backtick))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_NonUsPound)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) \ + OP(L'°', LSHIFT(Key_Quote)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_Period)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_Quote) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ç', LSHIFT(Key_Semicolon)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_LeftBracket) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', LSHIFT(Key_LeftBracket)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ì', Key_Equals) /* U+00ec, XKB_KEY_igrave, LATIN SMALL LETTER I WITH GRAVE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ò', Key_Semicolon) /* U+00f2, XKB_KEY_ograve, LATIN SMALL LETTER O WITH GRAVE */ \ + OP(L'÷', RALT(LSHIFT(Key_Slash))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_NonUsPound) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'ა', Key_A) /* U+10d0, XKB_KEY_Georgian_an, GEORGIAN LETTER AN */ \ + OP(L'ბ', Key_B) /* U+10d1, XKB_KEY_Georgian_ban, GEORGIAN LETTER BAN */ \ + OP(L'გ', Key_G) /* U+10d2, XKB_KEY_Georgian_gan, GEORGIAN LETTER GAN */ \ + OP(L'დ', Key_D) /* U+10d3, XKB_KEY_Georgian_don, GEORGIAN LETTER DON */ \ + OP(L'ე', Key_E) /* U+10d4, XKB_KEY_Georgian_en, GEORGIAN LETTER EN */ \ + OP(L'ვ', Key_V) /* U+10d5, XKB_KEY_Georgian_vin, GEORGIAN LETTER VIN */ \ + OP(L'ზ', Key_Z) /* U+10d6, XKB_KEY_Georgian_zen, GEORGIAN LETTER ZEN */ \ + OP(L'თ', LSHIFT(Key_T)) /* U+10d7, XKB_KEY_Georgian_tan, GEORGIAN LETTER TAN */ \ + OP(L'ი', Key_I) /* U+10d8, XKB_KEY_Georgian_in, GEORGIAN LETTER IN */ \ + OP(L'კ', Key_K) /* U+10d9, XKB_KEY_Georgian_kan, GEORGIAN LETTER KAN */ \ + OP(L'ლ', Key_L) /* U+10da, XKB_KEY_Georgian_las, GEORGIAN LETTER LAS */ \ + OP(L'მ', Key_M) /* U+10db, XKB_KEY_Georgian_man, GEORGIAN LETTER MAN */ \ + OP(L'ნ', Key_N) /* U+10dc, XKB_KEY_Georgian_nar, GEORGIAN LETTER NAR */ \ + OP(L'ო', Key_O) /* U+10dd, XKB_KEY_Georgian_on, GEORGIAN LETTER ON */ \ + OP(L'პ', Key_P) /* U+10de, XKB_KEY_Georgian_par, GEORGIAN LETTER PAR */ \ + OP(L'ჟ', LSHIFT(Key_J)) /* U+10df, XKB_KEY_Georgian_zhar, GEORGIAN LETTER ZHAR */ \ + OP(L'რ', Key_R) /* U+10e0, XKB_KEY_Georgian_rae, GEORGIAN LETTER RAE */ \ + OP(L'ს', Key_S) /* U+10e1, XKB_KEY_Georgian_san, GEORGIAN LETTER SAN */ \ + OP(L'ტ', Key_T) /* U+10e2, XKB_KEY_Georgian_tar, GEORGIAN LETTER TAR */ \ + OP(L'უ', Key_U) /* U+10e3, XKB_KEY_Georgian_un, GEORGIAN LETTER UN */ \ + OP(L'ფ', Key_F) /* U+10e4, XKB_KEY_Georgian_phar, GEORGIAN LETTER PHAR */ \ + OP(L'ქ', Key_Q) /* U+10e5, XKB_KEY_Georgian_khar, GEORGIAN LETTER KHAR */ \ + OP(L'ღ', LSHIFT(Key_R)) /* U+10e6, XKB_KEY_Georgian_ghan, GEORGIAN LETTER GHAN */ \ + OP(L'ყ', Key_Y) /* U+10e7, XKB_KEY_Georgian_qar, GEORGIAN LETTER QAR */ \ + OP(L'შ', LSHIFT(Key_S)) /* U+10e8, XKB_KEY_Georgian_shin, GEORGIAN LETTER SHIN */ \ + OP(L'ჩ', LSHIFT(Key_C)) /* U+10e9, XKB_KEY_Georgian_chin, GEORGIAN LETTER CHIN */ \ + OP(L'ც', Key_C) /* U+10ea, XKB_KEY_Georgian_can, GEORGIAN LETTER CAN */ \ + OP(L'ძ', LSHIFT(Key_Z)) /* U+10eb, XKB_KEY_Georgian_jil, GEORGIAN LETTER JIL */ \ + OP(L'წ', Key_W) /* U+10ec, XKB_KEY_Georgian_cil, GEORGIAN LETTER CIL */ \ + OP(L'ჭ', LSHIFT(Key_W)) /* U+10ed, XKB_KEY_Georgian_char, GEORGIAN LETTER CHAR */ \ + OP(L'ხ', Key_X) /* U+10ee, XKB_KEY_Georgian_xan, GEORGIAN LETTER XAN */ \ + OP(L'ჯ', Key_J) /* U+10ef, XKB_KEY_Georgian_jhan, GEORGIAN LETTER JHAN */ \ + OP(L'ჰ', Key_H) /* U+10f0, XKB_KEY_Georgian_hae, GEORGIAN LETTER HAE */ \ + OP(L'ჲ', RALT(Key_I)) /* U+10f2, XKB_KEY_Georgian_hie, GEORGIAN LETTER HIE */ \ + OP(L'ჳ', RALT(Key_V)) /* U+10f3, XKB_KEY_Georgian_we, GEORGIAN LETTER WE */ \ + OP(L'ჴ', RALT(Key_X)) /* U+10f4, XKB_KEY_Georgian_har, GEORGIAN LETTER HAR */ \ + OP(L'ჵ', RALT(Key_H)) /* U+10f5, XKB_KEY_Georgian_hoe, GEORGIAN LETTER HOE */ \ + OP(L'ჶ', RALT(Key_F)) /* U+10f6, XKB_KEY_Georgian_fi, GEORGIAN LETTER FI */ \ + OP(L'ჷ', RALT(Key_J)) \ + OP(L'ჸ', RALT(Key_Y)) \ + OP(L'ჹ', RALT(Key_G)) \ + OP(L'ჺ', RALT(Key_A)) \ + OP(L'჻', RALT(Key_Slash)) \ + OP(L'ჼ', RALT(Key_N)) \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_4))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Georgian_an, Key_A) \ + OP(XKB_KEY_Georgian_ban, Key_B) \ + OP(XKB_KEY_Georgian_can, Key_C) \ + OP(XKB_KEY_Georgian_char, LSHIFT(Key_W)) \ + OP(XKB_KEY_Georgian_chin, LSHIFT(Key_C)) \ + OP(XKB_KEY_Georgian_cil, Key_W) \ + OP(XKB_KEY_Georgian_don, Key_D) \ + OP(XKB_KEY_Georgian_en, Key_E) \ + OP(XKB_KEY_Georgian_fi, RALT(Key_F)) \ + OP(XKB_KEY_Georgian_gan, Key_G) \ + OP(XKB_KEY_Georgian_ghan, LSHIFT(Key_R)) \ + OP(XKB_KEY_Georgian_hae, Key_H) \ + OP(XKB_KEY_Georgian_har, RALT(Key_X)) \ + OP(XKB_KEY_Georgian_hie, RALT(Key_I)) \ + OP(XKB_KEY_Georgian_hoe, RALT(Key_H)) \ + OP(XKB_KEY_Georgian_in, Key_I) \ + OP(XKB_KEY_Georgian_jhan, Key_J) \ + OP(XKB_KEY_Georgian_jil, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Georgian_kan, Key_K) \ + OP(XKB_KEY_Georgian_khar, Key_Q) \ + OP(XKB_KEY_Georgian_las, Key_L) \ + OP(XKB_KEY_Georgian_man, Key_M) \ + OP(XKB_KEY_Georgian_nar, Key_N) \ + OP(XKB_KEY_Georgian_on, Key_O) \ + OP(XKB_KEY_Georgian_par, Key_P) \ + OP(XKB_KEY_Georgian_phar, Key_F) \ + OP(XKB_KEY_Georgian_qar, Key_Y) \ + OP(XKB_KEY_Georgian_rae, Key_R) \ + OP(XKB_KEY_Georgian_san, Key_S) \ + OP(XKB_KEY_Georgian_shin, LSHIFT(Key_S)) \ + OP(XKB_KEY_Georgian_tan, LSHIFT(Key_T)) \ + OP(XKB_KEY_Georgian_tar, Key_T) \ + OP(XKB_KEY_Georgian_un, Key_U) \ + OP(XKB_KEY_Georgian_vin, Key_V) \ + OP(XKB_KEY_Georgian_we, RALT(Key_V)) \ + OP(XKB_KEY_Georgian_xan, Key_X) \ + OP(XKB_KEY_Georgian_zen, Key_Z) \ + OP(XKB_KEY_Georgian_zhar, LSHIFT(Key_J)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_agrave, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_asciitilde, RALT(Key_Equals)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_backslash, Key_Backtick) \ + OP(XKB_KEY_bar, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_ccedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_2))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_eacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_egrave, Key_LeftBracket) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_grave, RALT(Key_Minus)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Period)) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_igrave, Key_Equals) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, RALT(Key_Quote)) \ + OP(XKB_KEY_ograve, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_section, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_3)) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_ugrave, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace it { +namespace geo { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace geo +} // namespace it +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/it/ibm/keymap.h b/src/kaleidoscope/host_keymap/linux/it/ibm/keymap.h new file mode 100644 index 0000000000..f7d4e3d1bd --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/it/ibm/keymap.h @@ -0,0 +1,462 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: it +// variant: ibm + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_Equals)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_Equals)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', LSHIFT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_NonUsPound)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'°', LSHIFT(Key_Quote)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'à', Key_Quote) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ç', LSHIFT(Key_Semicolon)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_LeftBracket) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', LSHIFT(Key_LeftBracket)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ì', Key_Equals) /* U+00ec, XKB_KEY_igrave, LATIN SMALL LETTER I WITH GRAVE */ \ + OP(L'ò', Key_Semicolon) /* U+00f2, XKB_KEY_ograve, LATIN SMALL LETTER O WITH GRAVE */ \ + OP(L'ù', Key_NonUsPound) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_agrave, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_Backtick) \ + OP(XKB_KEY_bar, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_degree, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_egrave, Key_LeftBracket) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_NonUsPound)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_igrave, Key_Equals) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ograve, Key_Semicolon) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, LSHIFT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace it { +namespace ibm { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ibm +} // namespace it +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/it/intl/keymap.h b/src/kaleidoscope/host_keymap/linux/it/intl/keymap.h new file mode 100644 index 0000000000..535241cbd4 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/it/intl/keymap.h @@ -0,0 +1,589 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: it +// variant: intl + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_Quote)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_Equals)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Minus)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_Quote)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_Equals)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Minus)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_Backtick))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_NonUsPound)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Quote)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_Quote) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', LSHIFT(Key_Semicolon)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_LeftBracket) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', LSHIFT(Key_LeftBracket)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_Equals) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ò', Key_Semicolon) /* U+00f2, XKB_KEY_ograve, LATIN SMALL LETTER O WITH GRAVE */ \ + OP(L'÷', RALT(LSHIFT(Key_Slash))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ú', Key_NonUsPound) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Đ', RALT(LSHIFT(Key_F))) \ + OP(L'đ', RALT(Key_F)) \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ə', RALT(LSHIFT(Key_E))) /* U+0259, XKB_KEY_schwa, LATIN SMALL LETTER SCHWA */ \ + OP(L'Χ', RALT(LSHIFT(Key_X))) \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'χ', RALT(Key_X)) \ + OP(L'ᵘ', RALT(LSHIFT(Key_Quote))) \ + OP(L'Ḍ', RALT(LSHIFT(Key_D))) \ + OP(L'ḍ', RALT(Key_D)) \ + OP(L'Ḥ', RALT(LSHIFT(Key_H))) \ + OP(L'ḥ', RALT(Key_H)) \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_4))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_agrave, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_asciitilde, RALT(Key_Equals)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_Backtick) \ + OP(XKB_KEY_bar, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, RALT(Key_Comma)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_2))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Slash)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_egrave, Key_LeftBracket) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Minus)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_Equals) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, RALT(Key_Quote)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ograve, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_schwa, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_section, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace it { +namespace intl { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace intl +} // namespace it +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/it/lld/keymap.h b/src/kaleidoscope/host_keymap/linux/it/lld/keymap.h new file mode 100644 index 0000000000..64006e3c4e --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/it/lld/keymap.h @@ -0,0 +1,595 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: it +// variant: lld + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_Quote)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_Equals)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Minus)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_Quote)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_Equals)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Minus)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_E))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_Backtick))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_NonUsPound)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Quote)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_A))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ë', RALT(LSHIFT(Key_P))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Ï', RALT(LSHIFT(Key_I))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'à', Key_Quote) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'á', RALT(Key_A)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ç', LSHIFT(Key_Semicolon)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_LeftBracket) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', LSHIFT(Key_LeftBracket)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ë', RALT(Key_P)) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'ì', Key_Equals) /* U+00ec, XKB_KEY_igrave, LATIN SMALL LETTER I WITH GRAVE */ \ + OP(L'ï', RALT(Key_I)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ò', Key_Semicolon) /* U+00f2, XKB_KEY_ograve, LATIN SMALL LETTER O WITH GRAVE */ \ + OP(L'÷', RALT(LSHIFT(Key_Slash))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_NonUsPound) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'Ć', RALT(LSHIFT(Key_C))) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', RALT(Key_C)) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ś', RALT(LSHIFT(Key_S))) /* U+015a, XKB_KEY_Sacute, LATIN CAPITAL LETTER S WITH ACUTE */ \ + OP(L'ś', RALT(Key_S)) /* U+015b, XKB_KEY_sacute, LATIN SMALL LETTER S WITH ACUTE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_4))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Sacute, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_A)) \ + OP(XKB_KEY_agrave, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_asciitilde, RALT(Key_Equals)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_Backtick) \ + OP(XKB_KEY_bar, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, RALT(Key_C)) \ + OP(XKB_KEY_ccedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Comma)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_2))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Slash)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_ediaeresis, RALT(Key_P)) \ + OP(XKB_KEY_egrave, Key_LeftBracket) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Minus)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idiaeresis, RALT(Key_I)) \ + OP(XKB_KEY_igrave, Key_Equals) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, RALT(Key_Quote)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ograve, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_sacute, RALT(Key_S)) \ + OP(XKB_KEY_section, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, LSHIFT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace it { +namespace lld { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace lld +} // namespace it +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/it/mac/keymap.h b/src/kaleidoscope/host_keymap/linux/it/mac/keymap.h new file mode 100644 index 0000000000..463df55b6a --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/it/mac/keymap.h @@ -0,0 +1,522 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: it +// variant: mac + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_Slash)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_2) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_Backtick)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_3) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_4) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_7) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_Backtick) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(LSHIFT(Key_4))) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(LSHIFT(Key_Period))) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(LSHIFT(Key_7))) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_LeftBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_0)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Period)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_7)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_Slash)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_2) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_Backtick)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_3) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_4) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_7) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_Backtick) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(LSHIFT(Key_4))) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(LSHIFT(Key_Period))) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(LSHIFT(Key_7))) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_LeftBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_0)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Period)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_7)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_Slash)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', Key_8) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_NonUsPound) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_1)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_NonUsPound)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Equals))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'´', RALT(Key_9)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_Semicolon)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_6)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Backtick)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'»', RALT(LSHIFT(Key_1))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_M)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Å', RALT(LSHIFT(Key_A))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Quote))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(Key_5)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', RALT(Key_K)) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'Ë', RALT(LSHIFT(Key_K))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Ì', RALT(Key_H)) /* U+00cc, XKB_KEY_Igrave, LATIN CAPITAL LETTER I WITH GRAVE */ \ + OP(L'Í', RALT(LSHIFT(Key_5))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Î', RALT(LSHIFT(Key_H))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ï', RALT(Key_J)) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ó', RALT(LSHIFT(Key_0))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ô', RALT(LSHIFT(Key_9))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ú', RALT(Key_Y)) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_9) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'å', RALT(Key_A)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_Quote)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_5) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_6) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_0) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ì', Key_LeftBracket) /* U+00ec, XKB_KEY_igrave, LATIN SMALL LETTER I WITH GRAVE */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ï', RALT(LSHIFT(Key_I))) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ò', Key_Slash) /* U+00f2, XKB_KEY_ograve, LATIN SMALL LETTER O WITH GRAVE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'ÿ', RALT(LSHIFT(Key_Y))) /* U+00ff, XKB_KEY_ydiaeresis, LATIN SMALL LETTER Y WITH DIAERESIS */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'∞', RALT(Key_8)) /* U+221e, XKB_KEY_infinity, INFINITY */ \ + OP(L'≠', RALT(Key_Equals)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(Key_5)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Egrave, RALT(Key_K)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_Idiaeresis, RALT(Key_J)) \ + OP(XKB_KEY_Igrave, RALT(Key_H)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, RALT(Key_Y)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, RALT(Key_9)) \ + OP(XKB_KEY_ae, RALT(Key_Quote)) \ + OP(XKB_KEY_agrave, Key_9) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_3) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_A)) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, Key_Backtick) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_bar, RALT(Key_Period)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_7)) \ + OP(XKB_KEY_bracketleft, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_bracketright, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_5) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_tilde, RALT(Key_N)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_0) \ + OP(XKB_KEY_egrave, Key_6) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_exclamdown, RALT(Key_Slash)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_0)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_1)) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_idiaeresis, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_igrave, Key_LeftBracket) \ + OP(XKB_KEY_infinity, RALT(Key_8)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_Semicolon)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notequal, RALT(Key_Equals)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ograve, Key_Slash) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_6)) \ + OP(XKB_KEY_parenleft, Key_4) \ + OP(XKB_KEY_parenright, Key_7) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_periodcentered, RALT(Key_Backtick)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_2) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_NonUsPound) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, Key_8) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_ydiaeresis, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace it { +namespace mac { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mac +} // namespace it +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/it/nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/it/nodeadkeys/keymap.h new file mode 100644 index 0000000000..103f67dcb7 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/it/nodeadkeys/keymap.h @@ -0,0 +1,594 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: it +// variant: nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_Quote)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_Equals)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Minus)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_Quote)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_Equals)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Minus)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_Backtick))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_NonUsPound)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_Period))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(Key_Slash)) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Quote)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Comma)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¸', RALT(LSHIFT(Key_Semicolon))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_Quote) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', LSHIFT(Key_Semicolon)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_LeftBracket) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', LSHIFT(Key_LeftBracket)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ì', Key_Equals) /* U+00ec, XKB_KEY_igrave, LATIN SMALL LETTER I WITH GRAVE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ò', Key_Semicolon) /* U+00f2, XKB_KEY_ograve, LATIN SMALL LETTER O WITH GRAVE */ \ + OP(L'÷', RALT(LSHIFT(Key_Slash))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_NonUsPound) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'˘', RALT(LSHIFT(Key_NonUsPound))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˛', RALT(LSHIFT(Key_0))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_2))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_4))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, RALT(Key_Comma)) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_agrave, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_asciitilde, RALT(Key_Equals)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_Backtick) \ + OP(XKB_KEY_bar, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_egrave, Key_LeftBracket) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Minus)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_igrave, Key_Equals) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(Key_Slash)) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, RALT(Key_Quote)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_ograve, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace it { +namespace nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace nodeadkeys +} // namespace it +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/it/scn/keymap.h b/src/kaleidoscope/host_keymap/linux/it/scn/keymap.h new file mode 100644 index 0000000000..d3b262d0fd --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/it/scn/keymap.h @@ -0,0 +1,592 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: it +// variant: scn + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_Quote)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_Equals)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Minus)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_Quote)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_Equals)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Minus)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', LSHIFT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_Backtick))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_NonUsPound)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'°', LSHIFT(Key_Quote)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Â', RALT(LSHIFT(Key_A))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ë', RALT(LSHIFT(Key_R))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ô', RALT(LSHIFT(Key_O))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Û', RALT(LSHIFT(Key_U))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'à', Key_Quote) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'â', RALT(Key_A)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ç', LSHIFT(Key_Semicolon)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_LeftBracket) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', LSHIFT(Key_LeftBracket)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ê', RALT(LSHIFT(Key_E))) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'ë', RALT(Key_R)) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'í', Key_Equals) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ò', Key_Semicolon) /* U+00f2, XKB_KEY_ograve, LATIN SMALL LETTER O WITH GRAVE */ \ + OP(L'ô', RALT(Key_O)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'÷', RALT(LSHIFT(Key_Slash))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ù', RALT(Key_NonUsPound)) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'ú', Key_NonUsPound) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'û', RALT(Key_U)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Đ', RALT(LSHIFT(Key_F))) \ + OP(L'đ', RALT(Key_F)) \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Š', RALT(LSHIFT(Key_S))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_S)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Χ', RALT(LSHIFT(Key_X))) \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'χ', RALT(Key_X)) \ + OP(L'ᵘ', RALT(LSHIFT(Key_Quote))) \ + OP(L'Ḍ', RALT(LSHIFT(Key_D))) \ + OP(L'ḍ', RALT(Key_D)) \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_4))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acircumflex, RALT(Key_A)) \ + OP(XKB_KEY_agrave, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_asciitilde, RALT(Key_Equals)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_Backtick) \ + OP(XKB_KEY_bar, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, RALT(Key_Comma)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_2))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Slash)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_ecircumflex, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_ediaeresis, RALT(Key_R)) \ + OP(XKB_KEY_egrave, Key_LeftBracket) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Minus)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_Equals) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, RALT(Key_Quote)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, RALT(Key_O)) \ + OP(XKB_KEY_ograve, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, RALT(Key_S)) \ + OP(XKB_KEY_section, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, LSHIFT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_NonUsPound) \ + OP(XKB_KEY_ucircumflex, RALT(Key_U)) \ + OP(XKB_KEY_ugrave, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace it { +namespace scn { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace scn +} // namespace it +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/it/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/it/standard/keymap.h new file mode 100644 index 0000000000..97044c4bae --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/it/standard/keymap.h @@ -0,0 +1,591 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: it +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_Quote)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_Equals)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Minus)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_Quote)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_Equals)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Minus)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_Backtick))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_NonUsPound)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Quote)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_Quote) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', LSHIFT(Key_Semicolon)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_LeftBracket) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', LSHIFT(Key_LeftBracket)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ì', Key_Equals) /* U+00ec, XKB_KEY_igrave, LATIN SMALL LETTER I WITH GRAVE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ò', Key_Semicolon) /* U+00f2, XKB_KEY_ograve, LATIN SMALL LETTER O WITH GRAVE */ \ + OP(L'÷', RALT(LSHIFT(Key_Slash))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_NonUsPound) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_4))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_agrave, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_asciitilde, RALT(Key_Equals)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_Backtick) \ + OP(XKB_KEY_bar, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Comma)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_2))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Slash)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_egrave, Key_LeftBracket) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Minus)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_igrave, Key_Equals) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, RALT(Key_Quote)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ograve, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace it { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace it +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/it/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/it/sun_type6/keymap.h new file mode 100644 index 0000000000..cc2b32ae53 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/it/sun_type6/keymap.h @@ -0,0 +1,463 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: it +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_Quote)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Semicolon)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_Equals)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Minus)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_8)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_9)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_Quote)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Semicolon)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_Equals)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Minus)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_8)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_9)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', LSHIFT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_NonUsPound)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'°', LSHIFT(Key_Quote)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'à', Key_Quote) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ç', LSHIFT(Key_Semicolon)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_LeftBracket) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', LSHIFT(Key_LeftBracket)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ì', Key_Equals) /* U+00ec, XKB_KEY_igrave, LATIN SMALL LETTER I WITH GRAVE */ \ + OP(L'ò', Key_Semicolon) /* U+00f2, XKB_KEY_ograve, LATIN SMALL LETTER O WITH GRAVE */ \ + OP(L'ù', Key_NonUsPound) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_agrave, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_asciitilde, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Semicolon)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_Backtick) \ + OP(XKB_KEY_bar, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_braceleft, RALT(Key_8)) \ + OP(XKB_KEY_braceright, RALT(Key_9)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_egrave, Key_LeftBracket) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Minus)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_igrave, Key_Equals) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_Quote)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ograve, Key_Semicolon) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, LSHIFT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace it { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace it +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/it/us/keymap.h b/src/kaleidoscope/host_keymap/linux/it/us/keymap.h new file mode 100644 index 0000000000..dd7b0925ec --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/it/us/keymap.h @@ -0,0 +1,508 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: it +// variant: us + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Comma)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_0)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_Period)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'À', RALT(LSHIFT(Key_A))) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Á', RALT(LSHIFT(Key_Z))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'È', RALT(LSHIFT(Key_E))) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'É', RALT(LSHIFT(Key_D))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ì', RALT(LSHIFT(Key_I))) /* U+00cc, XKB_KEY_Igrave, LATIN CAPITAL LETTER I WITH GRAVE */ \ + OP(L'Í', RALT(LSHIFT(Key_K))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ò', RALT(LSHIFT(Key_O))) /* U+00d2, XKB_KEY_Ograve, LATIN CAPITAL LETTER O WITH GRAVE */ \ + OP(L'Ó', RALT(LSHIFT(Key_L))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ù', RALT(LSHIFT(Key_U))) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'Ú', RALT(LSHIFT(Key_J))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'à', RALT(Key_A)) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'á', RALT(Key_Z)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'è', RALT(Key_E)) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', RALT(Key_D)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ì', RALT(Key_I)) /* U+00ec, XKB_KEY_igrave, LATIN SMALL LETTER I WITH GRAVE */ \ + OP(L'í', RALT(Key_K)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ò', RALT(Key_O)) /* U+00f2, XKB_KEY_ograve, LATIN SMALL LETTER O WITH GRAVE */ \ + OP(L'ó', RALT(Key_L)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ù', RALT(Key_U)) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'ú', RALT(Key_J)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Agrave, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Egrave, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Igrave, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Ograve, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Ugrave, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_Z)) \ + OP(XKB_KEY_agrave, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, RALT(Key_Quote)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Semicolon)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_Backtick)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Minus)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_0)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, RALT(Key_D)) \ + OP(XKB_KEY_egrave, RALT(Key_E)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Comma)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, RALT(Key_K)) \ + OP(XKB_KEY_igrave, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, RALT(Key_L)) \ + OP(XKB_KEY_ograve, RALT(Key_O)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, RALT(Key_J)) \ + OP(XKB_KEY_ugrave, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace it { +namespace us { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace us +} // namespace it +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/it/winkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/it/winkeys/keymap.h new file mode 100644 index 0000000000..df69cb398d --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/it/winkeys/keymap.h @@ -0,0 +1,589 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: it +// variant: winkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_Quote)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_Equals)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Minus)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_Quote)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_Equals)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Minus)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_Backtick))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_NonUsPound)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Quote)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_Quote) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', LSHIFT(Key_Semicolon)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_LeftBracket) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', LSHIFT(Key_LeftBracket)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ì', Key_Equals) /* U+00ec, XKB_KEY_igrave, LATIN SMALL LETTER I WITH GRAVE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ò', Key_Semicolon) /* U+00f2, XKB_KEY_ograve, LATIN SMALL LETTER O WITH GRAVE */ \ + OP(L'÷', RALT(LSHIFT(Key_Slash))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_NonUsPound) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_4))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_agrave, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_asciitilde, RALT(Key_Equals)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_Backtick) \ + OP(XKB_KEY_bar, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Comma)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_2))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Slash)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_egrave, Key_LeftBracket) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Minus)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_igrave, Key_Equals) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, RALT(Key_Quote)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ograve, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, Key_NonUsPound) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace it { +namespace winkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace winkeys +} // namespace it +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/jp/OADG109A/keymap.h b/src/kaleidoscope/host_keymap/linux/jp/OADG109A/keymap.h new file mode 100644 index 0000000000..7fcd090230 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/jp/OADG109A/keymap.h @@ -0,0 +1,433 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: jp +// variant: OADG109A + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Quote) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_Minus)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_LeftBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_Equals) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('`', LSHIFT(Key_LeftBracket)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('}', LSHIFT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Quote) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_Minus)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_LeftBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_Equals) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'`', LSHIFT(Key_LeftBracket)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'}', LSHIFT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, LSHIFT(Key_CapsLock)) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Eisu_toggle, Key_CapsLock) /* XKB_KEY_Eisu_toggle, Alphanumeric toggle */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_Execute, LALT(Key_PrintScreen)) /* XKB_KEY_Execute, Execute, run, do */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Kanji, LALT(Key_Backtick)) /* XKB_KEY_Kanji, Kanji, Kanji convert */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zenkaku_Hankaku, Key_Backtick) /* XKB_KEY_Zenkaku_Hankaku, Zenkaku/Hankaku toggle */ \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_7)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_Equals) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_at, Key_LeftBracket) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_bracketleft, Key_RightBracket) \ + OP(XKB_KEY_bracketright, Key_NonUsPound) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, Key_Quote) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_LeftBracket)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace jp { +namespace OADG109A { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace OADG109A +} // namespace jp +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/jp/dvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/jp/dvorak/keymap.h new file mode 100644 index 0000000000..d61f510885 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/jp/dvorak/keymap.h @@ -0,0 +1,433 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: jp +// variant: dvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Q) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_Quote)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_Minus) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_Equals) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('`', LSHIFT(Key_Minus)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('}', LSHIFT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Q) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_Quote)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_Minus) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_Equals) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'`', LSHIFT(Key_Minus)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'}', LSHIFT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, LSHIFT(Key_CapsLock)) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_Eisu_toggle, Key_CapsLock) /* XKB_KEY_Eisu_toggle, Alphanumeric toggle */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_Execute, LALT(Key_PrintScreen)) /* XKB_KEY_Execute, Execute, run, do */ \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Kanji, LALT(Key_Backtick)) /* XKB_KEY_Kanji, Kanji, Kanji convert */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Zenkaku_Hankaku, Key_Backtick) /* XKB_KEY_Zenkaku_Hankaku, Zenkaku/Hankaku toggle */ \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_7)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_Equals) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Q)) \ + OP(XKB_KEY_at, Key_Minus) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_bracketleft, Key_RightBracket) \ + OP(XKB_KEY_bracketright, Key_NonUsPound) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_colon, Key_Q) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_equal, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, LSHIFT(Key_Minus)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_plus, LSHIFT(Key_Z)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_semicolon, Key_Z) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace jp { +namespace dvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak +} // namespace jp +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/jp/kana/keymap.h b/src/kaleidoscope/host_keymap/linux/jp/kana/keymap.h new file mode 100644 index 0000000000..a3e9521945 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/jp/kana/keymap.h @@ -0,0 +1,318 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: jp +// variant: kana + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'、', LSHIFT(Key_Comma)) /* U+3001, XKB_KEY_kana_comma, IDEOGRAPHIC COMMA */ \ + OP(L'。', LSHIFT(Key_Period)) /* U+3002, XKB_KEY_kana_fullstop, IDEOGRAPHIC FULL STOP */ \ + OP(L'「', LSHIFT(Key_RightBracket)) /* U+300c, XKB_KEY_kana_openingbracket, LEFT CORNER BRACKET */ \ + OP(L'」', LSHIFT(Key_NonUsPound)) /* U+300d, XKB_KEY_kana_closingbracket, RIGHT CORNER BRACKET */ \ + OP(L'゛', Key_LeftBracket) /* U+309b, XKB_KEY_voicedsound, KATAKANA-HIRAGANA VOICED SOUND MARK */ \ + OP(L'゜', Key_RightBracket) /* U+309c, XKB_KEY_semivoicedsound, KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */ \ + OP(L'ァ', LSHIFT(Key_3)) /* U+30a1, XKB_KEY_kana_a, KATAKANA LETTER SMALL A */ \ + OP(L'ア', Key_3) /* U+30a2, XKB_KEY_kana_A, KATAKANA LETTER A */ \ + OP(L'ィ', LSHIFT(Key_E)) /* U+30a3, XKB_KEY_kana_i, KATAKANA LETTER SMALL I */ \ + OP(L'イ', Key_E) /* U+30a4, XKB_KEY_kana_I, KATAKANA LETTER I */ \ + OP(L'ゥ', LSHIFT(Key_4)) /* U+30a5, XKB_KEY_kana_u, KATAKANA LETTER SMALL U */ \ + OP(L'ウ', Key_4) /* U+30a6, XKB_KEY_kana_U, KATAKANA LETTER U */ \ + OP(L'ェ', LSHIFT(Key_5)) /* U+30a7, XKB_KEY_kana_e, KATAKANA LETTER SMALL E */ \ + OP(L'エ', Key_5) /* U+30a8, XKB_KEY_kana_E, KATAKANA LETTER E */ \ + OP(L'ォ', LSHIFT(Key_6)) /* U+30a9, XKB_KEY_kana_o, KATAKANA LETTER SMALL O */ \ + OP(L'オ', Key_6) /* U+30aa, XKB_KEY_kana_O, KATAKANA LETTER O */ \ + OP(L'カ', Key_T) /* U+30ab, XKB_KEY_kana_KA, KATAKANA LETTER KA */ \ + OP(L'キ', Key_G) /* U+30ad, XKB_KEY_kana_KI, KATAKANA LETTER KI */ \ + OP(L'ク', Key_H) /* U+30af, XKB_KEY_kana_KU, KATAKANA LETTER KU */ \ + OP(L'ケ', Key_Quote) /* U+30b1, XKB_KEY_kana_KE, KATAKANA LETTER KE */ \ + OP(L'コ', Key_B) /* U+30b3, XKB_KEY_kana_KO, KATAKANA LETTER KO */ \ + OP(L'サ', Key_X) /* U+30b5, XKB_KEY_kana_SA, KATAKANA LETTER SA */ \ + OP(L'シ', Key_D) /* U+30b7, XKB_KEY_kana_SHI, KATAKANA LETTER SI */ \ + OP(L'ス', Key_R) /* U+30b9, XKB_KEY_kana_SU, KATAKANA LETTER SU */ \ + OP(L'セ', Key_P) /* U+30bb, XKB_KEY_kana_SE, KATAKANA LETTER SE */ \ + OP(L'ソ', Key_C) /* U+30bd, XKB_KEY_kana_SO, KATAKANA LETTER SO */ \ + OP(L'タ', Key_Q) /* U+30bf, XKB_KEY_kana_TA, KATAKANA LETTER TA */ \ + OP(L'チ', Key_A) /* U+30c1, XKB_KEY_kana_CHI, KATAKANA LETTER TI */ \ + OP(L'ッ', LSHIFT(Key_Z)) /* U+30c3, XKB_KEY_kana_tsu, KATAKANA LETTER SMALL TU */ \ + OP(L'ツ', Key_Z) /* U+30c4, XKB_KEY_kana_TSU, KATAKANA LETTER TU */ \ + OP(L'テ', Key_W) /* U+30c6, XKB_KEY_kana_TE, KATAKANA LETTER TE */ \ + OP(L'ト', Key_S) /* U+30c8, XKB_KEY_kana_TO, KATAKANA LETTER TO */ \ + OP(L'ナ', Key_U) /* U+30ca, XKB_KEY_kana_NA, KATAKANA LETTER NA */ \ + OP(L'ニ', Key_I) /* U+30cb, XKB_KEY_kana_NI, KATAKANA LETTER NI */ \ + OP(L'ヌ', Key_1) /* U+30cc, XKB_KEY_kana_NU, KATAKANA LETTER NU */ \ + OP(L'ネ', Key_Comma) /* U+30cd, XKB_KEY_kana_NE, KATAKANA LETTER NE */ \ + OP(L'ノ', Key_K) /* U+30ce, XKB_KEY_kana_NO, KATAKANA LETTER NO */ \ + OP(L'ハ', Key_F) /* U+30cf, XKB_KEY_kana_HA, KATAKANA LETTER HA */ \ + OP(L'ヒ', Key_V) /* U+30d2, XKB_KEY_kana_HI, KATAKANA LETTER HI */ \ + OP(L'フ', Key_2) /* U+30d5, XKB_KEY_kana_FU, KATAKANA LETTER HU */ \ + OP(L'ヘ', Key_Equals) /* U+30d8, XKB_KEY_kana_HE, KATAKANA LETTER HE */ \ + OP(L'ホ', Key_Minus) /* U+30db, XKB_KEY_kana_HO, KATAKANA LETTER HO */ \ + OP(L'マ', Key_J) /* U+30de, XKB_KEY_kana_MA, KATAKANA LETTER MA */ \ + OP(L'ミ', Key_N) /* U+30df, XKB_KEY_kana_MI, KATAKANA LETTER MI */ \ + OP(L'ム', Key_NonUsPound) /* U+30e0, XKB_KEY_kana_MU, KATAKANA LETTER MU */ \ + OP(L'メ', Key_Slash) /* U+30e1, XKB_KEY_kana_ME, KATAKANA LETTER ME */ \ + OP(L'モ', Key_M) /* U+30e2, XKB_KEY_kana_MO, KATAKANA LETTER MO */ \ + OP(L'ャ', LSHIFT(Key_7)) /* U+30e3, XKB_KEY_kana_ya, KATAKANA LETTER SMALL YA */ \ + OP(L'ヤ', Key_7) /* U+30e4, XKB_KEY_kana_YA, KATAKANA LETTER YA */ \ + OP(L'ュ', LSHIFT(Key_8)) /* U+30e5, XKB_KEY_kana_yu, KATAKANA LETTER SMALL YU */ \ + OP(L'ユ', Key_8) /* U+30e6, XKB_KEY_kana_YU, KATAKANA LETTER YU */ \ + OP(L'ョ', LSHIFT(Key_9)) /* U+30e7, XKB_KEY_kana_yo, KATAKANA LETTER SMALL YO */ \ + OP(L'ヨ', Key_9) /* U+30e8, XKB_KEY_kana_YO, KATAKANA LETTER YO */ \ + OP(L'ラ', Key_O) /* U+30e9, XKB_KEY_kana_RA, KATAKANA LETTER RA */ \ + OP(L'リ', Key_L) /* U+30ea, XKB_KEY_kana_RI, KATAKANA LETTER RI */ \ + OP(L'ル', Key_Period) /* U+30eb, XKB_KEY_kana_RU, KATAKANA LETTER RU */ \ + OP(L'レ', Key_Semicolon) /* U+30ec, XKB_KEY_kana_RE, KATAKANA LETTER RE */ \ + OP(L'ワ', Key_0) /* U+30ef, XKB_KEY_kana_WA, KATAKANA LETTER WA */ \ + OP(L'ヲ', LSHIFT(Key_0)) /* U+30f2, XKB_KEY_kana_WO, KATAKANA LETTER WO */ \ + OP(L'ン', Key_Y) /* U+30f3, XKB_KEY_kana_N, KATAKANA LETTER N */ \ + OP(L'・', LSHIFT(Key_Slash)) /* U+30fb, XKB_KEY_kana_conjunctive, KATAKANA MIDDLE DOT */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, LSHIFT(Key_CapsLock)) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Eisu_toggle, Key_CapsLock) /* XKB_KEY_Eisu_toggle, Alphanumeric toggle */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_Execute, LALT(Key_PrintScreen)) /* XKB_KEY_Execute, Execute, run, do */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Kanji, LALT(Key_Backtick)) /* XKB_KEY_Kanji, Kanji, Kanji convert */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Zenkaku_Hankaku, Key_Backtick) /* XKB_KEY_Zenkaku_Hankaku, Zenkaku/Hankaku toggle */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_kana_A, Key_3) \ + OP(XKB_KEY_kana_CHI, Key_A) /* XKB_KEY_kana_TI, deprecated */ \ + OP(XKB_KEY_kana_E, Key_5) \ + OP(XKB_KEY_kana_FU, Key_2) /* XKB_KEY_kana_HU, deprecated */ \ + OP(XKB_KEY_kana_HA, Key_F) \ + OP(XKB_KEY_kana_HE, Key_Equals) \ + OP(XKB_KEY_kana_HI, Key_V) \ + OP(XKB_KEY_kana_HO, Key_Minus) \ + OP(XKB_KEY_kana_I, Key_E) \ + OP(XKB_KEY_kana_KA, Key_T) \ + OP(XKB_KEY_kana_KE, Key_Quote) \ + OP(XKB_KEY_kana_KI, Key_G) \ + OP(XKB_KEY_kana_KO, Key_B) \ + OP(XKB_KEY_kana_KU, Key_H) \ + OP(XKB_KEY_kana_MA, Key_J) \ + OP(XKB_KEY_kana_ME, Key_Slash) \ + OP(XKB_KEY_kana_MI, Key_N) \ + OP(XKB_KEY_kana_MO, Key_M) \ + OP(XKB_KEY_kana_MU, Key_NonUsPound) \ + OP(XKB_KEY_kana_N, Key_Y) \ + OP(XKB_KEY_kana_NA, Key_U) \ + OP(XKB_KEY_kana_NE, Key_Comma) \ + OP(XKB_KEY_kana_NI, Key_I) \ + OP(XKB_KEY_kana_NO, Key_K) \ + OP(XKB_KEY_kana_NU, Key_1) \ + OP(XKB_KEY_kana_O, Key_6) \ + OP(XKB_KEY_kana_RA, Key_O) \ + OP(XKB_KEY_kana_RE, Key_Semicolon) \ + OP(XKB_KEY_kana_RI, Key_L) \ + OP(XKB_KEY_kana_RU, Key_Period) \ + OP(XKB_KEY_kana_SA, Key_X) \ + OP(XKB_KEY_kana_SE, Key_P) \ + OP(XKB_KEY_kana_SHI, Key_D) \ + OP(XKB_KEY_kana_SO, Key_C) \ + OP(XKB_KEY_kana_SU, Key_R) \ + OP(XKB_KEY_kana_TA, Key_Q) \ + OP(XKB_KEY_kana_TE, Key_W) \ + OP(XKB_KEY_kana_TO, Key_S) \ + OP(XKB_KEY_kana_TSU, Key_Z) /* XKB_KEY_kana_TU, deprecated */ \ + OP(XKB_KEY_kana_U, Key_4) \ + OP(XKB_KEY_kana_WA, Key_0) \ + OP(XKB_KEY_kana_WO, LSHIFT(Key_0)) \ + OP(XKB_KEY_kana_YA, Key_7) \ + OP(XKB_KEY_kana_YO, Key_9) \ + OP(XKB_KEY_kana_YU, Key_8) \ + OP(XKB_KEY_kana_a, LSHIFT(Key_3)) \ + OP(XKB_KEY_kana_closingbracket, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_kana_comma, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_kana_conjunctive, LSHIFT(Key_Slash)) /* XKB_KEY_kana_middledot, deprecated */ \ + OP(XKB_KEY_kana_e, LSHIFT(Key_5)) \ + OP(XKB_KEY_kana_fullstop, LSHIFT(Key_Period)) \ + OP(XKB_KEY_kana_i, LSHIFT(Key_E)) \ + OP(XKB_KEY_kana_o, LSHIFT(Key_6)) \ + OP(XKB_KEY_kana_openingbracket, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_kana_tsu, LSHIFT(Key_Z)) /* XKB_KEY_kana_tu, deprecated */ \ + OP(XKB_KEY_kana_u, LSHIFT(Key_4)) \ + OP(XKB_KEY_kana_ya, LSHIFT(Key_7)) \ + OP(XKB_KEY_kana_yo, LSHIFT(Key_9)) \ + OP(XKB_KEY_kana_yu, LSHIFT(Key_8)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_semivoicedsound, Key_RightBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_voicedsound, Key_LeftBracket) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace jp { +namespace kana { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace kana +} // namespace jp +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/jp/kana86/keymap.h b/src/kaleidoscope/host_keymap/linux/jp/kana86/keymap.h new file mode 100644 index 0000000000..6a5b790866 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/jp/kana86/keymap.h @@ -0,0 +1,435 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: jp +// variant: kana86 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Quote) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_Minus)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_LeftBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_Equals) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('`', LSHIFT(Key_LeftBracket)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('}', LSHIFT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Quote) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_Minus)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_LeftBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_Equals) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'`', LSHIFT(Key_LeftBracket)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'}', LSHIFT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Equals)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'ヲ', LSHIFT(Key_0)) /* U+30f2, XKB_KEY_kana_WO, KATAKANA LETTER WO */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, LSHIFT(Key_CapsLock)) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Eisu_toggle, Key_CapsLock) /* XKB_KEY_Eisu_toggle, Alphanumeric toggle */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_Execute, LALT(Key_PrintScreen)) /* XKB_KEY_Execute, Execute, run, do */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Kanji, LALT(Key_Backtick)) /* XKB_KEY_Kanji, Kanji, Kanji convert */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zenkaku_Hankaku, Key_Backtick) /* XKB_KEY_Zenkaku_Hankaku, Zenkaku/Hankaku toggle */ \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_7)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_Equals) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_at, Key_LeftBracket) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_bracketleft, Key_RightBracket) \ + OP(XKB_KEY_bracketright, Key_NonUsPound) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, Key_Quote) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_LeftBracket)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kana_WO, LSHIFT(Key_0)) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace jp { +namespace kana86 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace kana86 +} // namespace jp +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/jp/mac/keymap.h b/src/kaleidoscope/host_keymap/linux/jp/mac/keymap.h new file mode 100644 index 0000000000..58ec5293ac --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/jp/mac/keymap.h @@ -0,0 +1,317 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: jp +// variant: mac + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'、', LSHIFT(Key_Comma)) /* U+3001, XKB_KEY_kana_comma, IDEOGRAPHIC COMMA */ \ + OP(L'。', LSHIFT(Key_Period)) /* U+3002, XKB_KEY_kana_fullstop, IDEOGRAPHIC FULL STOP */ \ + OP(L'「', LSHIFT(Key_RightBracket)) /* U+300c, XKB_KEY_kana_openingbracket, LEFT CORNER BRACKET */ \ + OP(L'」', LSHIFT(Key_NonUsPound)) /* U+300d, XKB_KEY_kana_closingbracket, RIGHT CORNER BRACKET */ \ + OP(L'゛', Key_LeftBracket) /* U+309b, XKB_KEY_voicedsound, KATAKANA-HIRAGANA VOICED SOUND MARK */ \ + OP(L'゜', Key_RightBracket) /* U+309c, XKB_KEY_semivoicedsound, KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */ \ + OP(L'ァ', LSHIFT(Key_3)) /* U+30a1, XKB_KEY_kana_a, KATAKANA LETTER SMALL A */ \ + OP(L'ア', Key_3) /* U+30a2, XKB_KEY_kana_A, KATAKANA LETTER A */ \ + OP(L'ィ', LSHIFT(Key_E)) /* U+30a3, XKB_KEY_kana_i, KATAKANA LETTER SMALL I */ \ + OP(L'イ', Key_E) /* U+30a4, XKB_KEY_kana_I, KATAKANA LETTER I */ \ + OP(L'ゥ', LSHIFT(Key_4)) /* U+30a5, XKB_KEY_kana_u, KATAKANA LETTER SMALL U */ \ + OP(L'ウ', Key_4) /* U+30a6, XKB_KEY_kana_U, KATAKANA LETTER U */ \ + OP(L'ェ', LSHIFT(Key_5)) /* U+30a7, XKB_KEY_kana_e, KATAKANA LETTER SMALL E */ \ + OP(L'エ', Key_5) /* U+30a8, XKB_KEY_kana_E, KATAKANA LETTER E */ \ + OP(L'ォ', LSHIFT(Key_6)) /* U+30a9, XKB_KEY_kana_o, KATAKANA LETTER SMALL O */ \ + OP(L'オ', Key_6) /* U+30aa, XKB_KEY_kana_O, KATAKANA LETTER O */ \ + OP(L'カ', Key_T) /* U+30ab, XKB_KEY_kana_KA, KATAKANA LETTER KA */ \ + OP(L'キ', Key_G) /* U+30ad, XKB_KEY_kana_KI, KATAKANA LETTER KI */ \ + OP(L'ク', Key_H) /* U+30af, XKB_KEY_kana_KU, KATAKANA LETTER KU */ \ + OP(L'ケ', Key_Quote) /* U+30b1, XKB_KEY_kana_KE, KATAKANA LETTER KE */ \ + OP(L'コ', Key_B) /* U+30b3, XKB_KEY_kana_KO, KATAKANA LETTER KO */ \ + OP(L'サ', Key_X) /* U+30b5, XKB_KEY_kana_SA, KATAKANA LETTER SA */ \ + OP(L'シ', Key_D) /* U+30b7, XKB_KEY_kana_SHI, KATAKANA LETTER SI */ \ + OP(L'ス', Key_R) /* U+30b9, XKB_KEY_kana_SU, KATAKANA LETTER SU */ \ + OP(L'セ', Key_P) /* U+30bb, XKB_KEY_kana_SE, KATAKANA LETTER SE */ \ + OP(L'ソ', Key_C) /* U+30bd, XKB_KEY_kana_SO, KATAKANA LETTER SO */ \ + OP(L'タ', Key_Q) /* U+30bf, XKB_KEY_kana_TA, KATAKANA LETTER TA */ \ + OP(L'チ', Key_A) /* U+30c1, XKB_KEY_kana_CHI, KATAKANA LETTER TI */ \ + OP(L'ッ', LSHIFT(Key_Z)) /* U+30c3, XKB_KEY_kana_tsu, KATAKANA LETTER SMALL TU */ \ + OP(L'ツ', Key_Z) /* U+30c4, XKB_KEY_kana_TSU, KATAKANA LETTER TU */ \ + OP(L'テ', Key_W) /* U+30c6, XKB_KEY_kana_TE, KATAKANA LETTER TE */ \ + OP(L'ト', Key_S) /* U+30c8, XKB_KEY_kana_TO, KATAKANA LETTER TO */ \ + OP(L'ナ', Key_U) /* U+30ca, XKB_KEY_kana_NA, KATAKANA LETTER NA */ \ + OP(L'ニ', Key_I) /* U+30cb, XKB_KEY_kana_NI, KATAKANA LETTER NI */ \ + OP(L'ヌ', Key_1) /* U+30cc, XKB_KEY_kana_NU, KATAKANA LETTER NU */ \ + OP(L'ネ', Key_Comma) /* U+30cd, XKB_KEY_kana_NE, KATAKANA LETTER NE */ \ + OP(L'ノ', Key_K) /* U+30ce, XKB_KEY_kana_NO, KATAKANA LETTER NO */ \ + OP(L'ハ', Key_F) /* U+30cf, XKB_KEY_kana_HA, KATAKANA LETTER HA */ \ + OP(L'ヒ', Key_V) /* U+30d2, XKB_KEY_kana_HI, KATAKANA LETTER HI */ \ + OP(L'フ', Key_2) /* U+30d5, XKB_KEY_kana_FU, KATAKANA LETTER HU */ \ + OP(L'ヘ', Key_Equals) /* U+30d8, XKB_KEY_kana_HE, KATAKANA LETTER HE */ \ + OP(L'ホ', Key_Minus) /* U+30db, XKB_KEY_kana_HO, KATAKANA LETTER HO */ \ + OP(L'マ', Key_J) /* U+30de, XKB_KEY_kana_MA, KATAKANA LETTER MA */ \ + OP(L'ミ', Key_N) /* U+30df, XKB_KEY_kana_MI, KATAKANA LETTER MI */ \ + OP(L'ム', Key_NonUsPound) /* U+30e0, XKB_KEY_kana_MU, KATAKANA LETTER MU */ \ + OP(L'メ', Key_Slash) /* U+30e1, XKB_KEY_kana_ME, KATAKANA LETTER ME */ \ + OP(L'モ', Key_M) /* U+30e2, XKB_KEY_kana_MO, KATAKANA LETTER MO */ \ + OP(L'ャ', LSHIFT(Key_7)) /* U+30e3, XKB_KEY_kana_ya, KATAKANA LETTER SMALL YA */ \ + OP(L'ヤ', Key_7) /* U+30e4, XKB_KEY_kana_YA, KATAKANA LETTER YA */ \ + OP(L'ュ', LSHIFT(Key_8)) /* U+30e5, XKB_KEY_kana_yu, KATAKANA LETTER SMALL YU */ \ + OP(L'ユ', Key_8) /* U+30e6, XKB_KEY_kana_YU, KATAKANA LETTER YU */ \ + OP(L'ョ', LSHIFT(Key_9)) /* U+30e7, XKB_KEY_kana_yo, KATAKANA LETTER SMALL YO */ \ + OP(L'ヨ', Key_9) /* U+30e8, XKB_KEY_kana_YO, KATAKANA LETTER YO */ \ + OP(L'ラ', Key_O) /* U+30e9, XKB_KEY_kana_RA, KATAKANA LETTER RA */ \ + OP(L'リ', Key_L) /* U+30ea, XKB_KEY_kana_RI, KATAKANA LETTER RI */ \ + OP(L'ル', Key_Period) /* U+30eb, XKB_KEY_kana_RU, KATAKANA LETTER RU */ \ + OP(L'レ', Key_Semicolon) /* U+30ec, XKB_KEY_kana_RE, KATAKANA LETTER RE */ \ + OP(L'ワ', Key_0) /* U+30ef, XKB_KEY_kana_WA, KATAKANA LETTER WA */ \ + OP(L'ヲ', LSHIFT(Key_0)) /* U+30f2, XKB_KEY_kana_WO, KATAKANA LETTER WO */ \ + OP(L'ン', Key_Y) /* U+30f3, XKB_KEY_kana_N, KATAKANA LETTER N */ \ + OP(L'・', LSHIFT(Key_Slash)) /* U+30fb, XKB_KEY_kana_conjunctive, KATAKANA MIDDLE DOT */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_Execute, LALT(Key_PrintScreen)) /* XKB_KEY_Execute, Execute, run, do */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Kanji, LALT(Key_Backtick)) /* XKB_KEY_Kanji, Kanji, Kanji convert */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Zenkaku_Hankaku, Key_Backtick) /* XKB_KEY_Zenkaku_Hankaku, Zenkaku/Hankaku toggle */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_kana_A, Key_3) \ + OP(XKB_KEY_kana_CHI, Key_A) /* XKB_KEY_kana_TI, deprecated */ \ + OP(XKB_KEY_kana_E, Key_5) \ + OP(XKB_KEY_kana_FU, Key_2) /* XKB_KEY_kana_HU, deprecated */ \ + OP(XKB_KEY_kana_HA, Key_F) \ + OP(XKB_KEY_kana_HE, Key_Equals) \ + OP(XKB_KEY_kana_HI, Key_V) \ + OP(XKB_KEY_kana_HO, Key_Minus) \ + OP(XKB_KEY_kana_I, Key_E) \ + OP(XKB_KEY_kana_KA, Key_T) \ + OP(XKB_KEY_kana_KE, Key_Quote) \ + OP(XKB_KEY_kana_KI, Key_G) \ + OP(XKB_KEY_kana_KO, Key_B) \ + OP(XKB_KEY_kana_KU, Key_H) \ + OP(XKB_KEY_kana_MA, Key_J) \ + OP(XKB_KEY_kana_ME, Key_Slash) \ + OP(XKB_KEY_kana_MI, Key_N) \ + OP(XKB_KEY_kana_MO, Key_M) \ + OP(XKB_KEY_kana_MU, Key_NonUsPound) \ + OP(XKB_KEY_kana_N, Key_Y) \ + OP(XKB_KEY_kana_NA, Key_U) \ + OP(XKB_KEY_kana_NE, Key_Comma) \ + OP(XKB_KEY_kana_NI, Key_I) \ + OP(XKB_KEY_kana_NO, Key_K) \ + OP(XKB_KEY_kana_NU, Key_1) \ + OP(XKB_KEY_kana_O, Key_6) \ + OP(XKB_KEY_kana_RA, Key_O) \ + OP(XKB_KEY_kana_RE, Key_Semicolon) \ + OP(XKB_KEY_kana_RI, Key_L) \ + OP(XKB_KEY_kana_RU, Key_Period) \ + OP(XKB_KEY_kana_SA, Key_X) \ + OP(XKB_KEY_kana_SE, Key_P) \ + OP(XKB_KEY_kana_SHI, Key_D) \ + OP(XKB_KEY_kana_SO, Key_C) \ + OP(XKB_KEY_kana_SU, Key_R) \ + OP(XKB_KEY_kana_TA, Key_Q) \ + OP(XKB_KEY_kana_TE, Key_W) \ + OP(XKB_KEY_kana_TO, Key_S) \ + OP(XKB_KEY_kana_TSU, Key_Z) /* XKB_KEY_kana_TU, deprecated */ \ + OP(XKB_KEY_kana_U, Key_4) \ + OP(XKB_KEY_kana_WA, Key_0) \ + OP(XKB_KEY_kana_WO, LSHIFT(Key_0)) \ + OP(XKB_KEY_kana_YA, Key_7) \ + OP(XKB_KEY_kana_YO, Key_9) \ + OP(XKB_KEY_kana_YU, Key_8) \ + OP(XKB_KEY_kana_a, LSHIFT(Key_3)) \ + OP(XKB_KEY_kana_closingbracket, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_kana_comma, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_kana_conjunctive, LSHIFT(Key_Slash)) /* XKB_KEY_kana_middledot, deprecated */ \ + OP(XKB_KEY_kana_e, LSHIFT(Key_5)) \ + OP(XKB_KEY_kana_fullstop, LSHIFT(Key_Period)) \ + OP(XKB_KEY_kana_i, LSHIFT(Key_E)) \ + OP(XKB_KEY_kana_o, LSHIFT(Key_6)) \ + OP(XKB_KEY_kana_openingbracket, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_kana_tsu, LSHIFT(Key_Z)) /* XKB_KEY_kana_tu, deprecated */ \ + OP(XKB_KEY_kana_u, LSHIFT(Key_4)) \ + OP(XKB_KEY_kana_ya, LSHIFT(Key_7)) \ + OP(XKB_KEY_kana_yo, LSHIFT(Key_9)) \ + OP(XKB_KEY_kana_yu, LSHIFT(Key_8)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_semivoicedsound, Key_RightBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_voicedsound, Key_LeftBracket) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace jp { +namespace mac { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mac +} // namespace jp +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/jp/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/jp/standard/keymap.h new file mode 100644 index 0000000000..05b6538301 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/jp/standard/keymap.h @@ -0,0 +1,433 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: jp +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Quote) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_Minus)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_LeftBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_Equals) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('`', LSHIFT(Key_LeftBracket)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('}', LSHIFT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_0)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Quote) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_Minus)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_LeftBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_Equals) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'`', LSHIFT(Key_LeftBracket)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'}', LSHIFT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_0)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, LSHIFT(Key_CapsLock)) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Eisu_toggle, Key_CapsLock) /* XKB_KEY_Eisu_toggle, Alphanumeric toggle */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_Execute, LALT(Key_PrintScreen)) /* XKB_KEY_Execute, Execute, run, do */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Kanji, LALT(Key_Backtick)) /* XKB_KEY_Kanji, Kanji, Kanji convert */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zenkaku_Hankaku, Key_Backtick) /* XKB_KEY_Zenkaku_Hankaku, Zenkaku/Hankaku toggle */ \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_7)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_Equals) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_0)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_at, Key_LeftBracket) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_bracketleft, Key_RightBracket) \ + OP(XKB_KEY_bracketright, Key_NonUsPound) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, Key_Quote) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_LeftBracket)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace jp { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace jp +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/jp/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/jp/sun_type6/keymap.h new file mode 100644 index 0000000000..a29f502bcc --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/jp/sun_type6/keymap.h @@ -0,0 +1,552 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: jp +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', RALT(LSHIFT(Key_1))) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(LSHIFT(Key_2))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(LSHIFT(Key_3))) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(LSHIFT(Key_4))) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(LSHIFT(Key_5))) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(LSHIFT(Key_6))) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(LSHIFT(Key_7))) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', RALT(LSHIFT(Key_8))) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', RALT(LSHIFT(Key_9))) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Quote) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', RALT(LSHIFT(Key_Minus))) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', RALT(LSHIFT(Key_Slash))) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_LeftBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', RALT(LSHIFT(Key_A))) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', RALT(LSHIFT(Key_B))) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', RALT(LSHIFT(Key_C))) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', RALT(LSHIFT(Key_D))) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', RALT(LSHIFT(Key_E))) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', RALT(LSHIFT(Key_F))) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', RALT(LSHIFT(Key_G))) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', RALT(LSHIFT(Key_H))) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', RALT(LSHIFT(Key_I))) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', RALT(LSHIFT(Key_J))) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', RALT(LSHIFT(Key_K))) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', RALT(LSHIFT(Key_L))) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', RALT(LSHIFT(Key_M))) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', RALT(LSHIFT(Key_N))) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', RALT(LSHIFT(Key_O))) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', RALT(LSHIFT(Key_P))) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', RALT(LSHIFT(Key_R))) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', RALT(LSHIFT(Key_S))) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', RALT(LSHIFT(Key_T))) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', RALT(LSHIFT(Key_U))) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', RALT(LSHIFT(Key_V))) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', RALT(LSHIFT(Key_Y))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', RALT(LSHIFT(Key_Z))) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_Equals) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(LSHIFT(Key_RightBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('}', RALT(LSHIFT(Key_NonUsPound))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', RALT(LSHIFT(Key_1))) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(LSHIFT(Key_2))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(LSHIFT(Key_3))) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(LSHIFT(Key_4))) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(LSHIFT(Key_5))) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(LSHIFT(Key_6))) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(LSHIFT(Key_7))) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', RALT(LSHIFT(Key_8))) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', RALT(LSHIFT(Key_9))) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Quote) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', RALT(LSHIFT(Key_Minus))) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', RALT(LSHIFT(Key_Slash))) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_LeftBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', RALT(LSHIFT(Key_A))) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', RALT(LSHIFT(Key_B))) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', RALT(LSHIFT(Key_C))) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', RALT(LSHIFT(Key_D))) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', RALT(LSHIFT(Key_E))) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', RALT(LSHIFT(Key_F))) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', RALT(LSHIFT(Key_G))) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', RALT(LSHIFT(Key_H))) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', RALT(LSHIFT(Key_I))) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', RALT(LSHIFT(Key_J))) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', RALT(LSHIFT(Key_K))) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', RALT(LSHIFT(Key_L))) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', RALT(LSHIFT(Key_M))) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', RALT(LSHIFT(Key_N))) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', RALT(LSHIFT(Key_O))) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', RALT(LSHIFT(Key_P))) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', RALT(LSHIFT(Key_R))) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', RALT(LSHIFT(Key_S))) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', RALT(LSHIFT(Key_T))) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', RALT(LSHIFT(Key_U))) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', RALT(LSHIFT(Key_V))) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', RALT(LSHIFT(Key_Y))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', RALT(LSHIFT(Key_Z))) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_Equals) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(LSHIFT(Key_RightBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'}', RALT(LSHIFT(Key_NonUsPound))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'、', LSHIFT(Key_Comma)) /* U+3001, XKB_KEY_kana_comma, IDEOGRAPHIC COMMA */ \ + OP(L'。', LSHIFT(Key_Period)) /* U+3002, XKB_KEY_kana_fullstop, IDEOGRAPHIC FULL STOP */ \ + OP(L'「', LSHIFT(Key_RightBracket)) /* U+300c, XKB_KEY_kana_openingbracket, LEFT CORNER BRACKET */ \ + OP(L'」', LSHIFT(Key_NonUsPound)) /* U+300d, XKB_KEY_kana_closingbracket, RIGHT CORNER BRACKET */ \ + OP(L'゛', RALT(Key_LeftBracket)) /* U+309b, XKB_KEY_voicedsound, KATAKANA-HIRAGANA VOICED SOUND MARK */ \ + OP(L'゜', RALT(Key_RightBracket)) /* U+309c, XKB_KEY_semivoicedsound, KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */ \ + OP(L'ァ', LSHIFT(Key_3)) /* U+30a1, XKB_KEY_kana_a, KATAKANA LETTER SMALL A */ \ + OP(L'ア', RALT(Key_3)) /* U+30a2, XKB_KEY_kana_A, KATAKANA LETTER A */ \ + OP(L'ィ', LSHIFT(Key_E)) /* U+30a3, XKB_KEY_kana_i, KATAKANA LETTER SMALL I */ \ + OP(L'イ', RALT(Key_E)) /* U+30a4, XKB_KEY_kana_I, KATAKANA LETTER I */ \ + OP(L'ゥ', LSHIFT(Key_4)) /* U+30a5, XKB_KEY_kana_u, KATAKANA LETTER SMALL U */ \ + OP(L'ウ', RALT(Key_4)) /* U+30a6, XKB_KEY_kana_U, KATAKANA LETTER U */ \ + OP(L'ェ', LSHIFT(Key_5)) /* U+30a7, XKB_KEY_kana_e, KATAKANA LETTER SMALL E */ \ + OP(L'エ', RALT(Key_5)) /* U+30a8, XKB_KEY_kana_E, KATAKANA LETTER E */ \ + OP(L'ォ', LSHIFT(Key_6)) /* U+30a9, XKB_KEY_kana_o, KATAKANA LETTER SMALL O */ \ + OP(L'オ', RALT(Key_6)) /* U+30aa, XKB_KEY_kana_O, KATAKANA LETTER O */ \ + OP(L'カ', RALT(Key_T)) /* U+30ab, XKB_KEY_kana_KA, KATAKANA LETTER KA */ \ + OP(L'キ', RALT(Key_G)) /* U+30ad, XKB_KEY_kana_KI, KATAKANA LETTER KI */ \ + OP(L'ク', RALT(Key_H)) /* U+30af, XKB_KEY_kana_KU, KATAKANA LETTER KU */ \ + OP(L'ケ', RALT(Key_Quote)) /* U+30b1, XKB_KEY_kana_KE, KATAKANA LETTER KE */ \ + OP(L'コ', RALT(Key_B)) /* U+30b3, XKB_KEY_kana_KO, KATAKANA LETTER KO */ \ + OP(L'サ', RALT(Key_X)) /* U+30b5, XKB_KEY_kana_SA, KATAKANA LETTER SA */ \ + OP(L'シ', RALT(Key_D)) /* U+30b7, XKB_KEY_kana_SHI, KATAKANA LETTER SI */ \ + OP(L'ス', RALT(Key_R)) /* U+30b9, XKB_KEY_kana_SU, KATAKANA LETTER SU */ \ + OP(L'セ', RALT(Key_P)) /* U+30bb, XKB_KEY_kana_SE, KATAKANA LETTER SE */ \ + OP(L'ソ', RALT(Key_C)) /* U+30bd, XKB_KEY_kana_SO, KATAKANA LETTER SO */ \ + OP(L'タ', RALT(Key_Q)) /* U+30bf, XKB_KEY_kana_TA, KATAKANA LETTER TA */ \ + OP(L'チ', RALT(Key_A)) /* U+30c1, XKB_KEY_kana_CHI, KATAKANA LETTER TI */ \ + OP(L'ッ', LSHIFT(Key_Z)) /* U+30c3, XKB_KEY_kana_tsu, KATAKANA LETTER SMALL TU */ \ + OP(L'ツ', RALT(Key_Z)) /* U+30c4, XKB_KEY_kana_TSU, KATAKANA LETTER TU */ \ + OP(L'テ', RALT(Key_W)) /* U+30c6, XKB_KEY_kana_TE, KATAKANA LETTER TE */ \ + OP(L'ト', RALT(Key_S)) /* U+30c8, XKB_KEY_kana_TO, KATAKANA LETTER TO */ \ + OP(L'ナ', RALT(Key_U)) /* U+30ca, XKB_KEY_kana_NA, KATAKANA LETTER NA */ \ + OP(L'ニ', RALT(Key_I)) /* U+30cb, XKB_KEY_kana_NI, KATAKANA LETTER NI */ \ + OP(L'ヌ', RALT(Key_1)) /* U+30cc, XKB_KEY_kana_NU, KATAKANA LETTER NU */ \ + OP(L'ネ', RALT(Key_Comma)) /* U+30cd, XKB_KEY_kana_NE, KATAKANA LETTER NE */ \ + OP(L'ノ', RALT(Key_K)) /* U+30ce, XKB_KEY_kana_NO, KATAKANA LETTER NO */ \ + OP(L'ハ', RALT(Key_F)) /* U+30cf, XKB_KEY_kana_HA, KATAKANA LETTER HA */ \ + OP(L'ヒ', RALT(Key_V)) /* U+30d2, XKB_KEY_kana_HI, KATAKANA LETTER HI */ \ + OP(L'フ', RALT(Key_2)) /* U+30d5, XKB_KEY_kana_FU, KATAKANA LETTER HU */ \ + OP(L'ヘ', RALT(Key_Equals)) /* U+30d8, XKB_KEY_kana_HE, KATAKANA LETTER HE */ \ + OP(L'ホ', RALT(Key_Minus)) /* U+30db, XKB_KEY_kana_HO, KATAKANA LETTER HO */ \ + OP(L'マ', RALT(Key_J)) /* U+30de, XKB_KEY_kana_MA, KATAKANA LETTER MA */ \ + OP(L'ミ', RALT(Key_N)) /* U+30df, XKB_KEY_kana_MI, KATAKANA LETTER MI */ \ + OP(L'ム', RALT(Key_NonUsPound)) /* U+30e0, XKB_KEY_kana_MU, KATAKANA LETTER MU */ \ + OP(L'メ', RALT(Key_Slash)) /* U+30e1, XKB_KEY_kana_ME, KATAKANA LETTER ME */ \ + OP(L'モ', RALT(Key_M)) /* U+30e2, XKB_KEY_kana_MO, KATAKANA LETTER MO */ \ + OP(L'ャ', LSHIFT(Key_7)) /* U+30e3, XKB_KEY_kana_ya, KATAKANA LETTER SMALL YA */ \ + OP(L'ヤ', RALT(Key_7)) /* U+30e4, XKB_KEY_kana_YA, KATAKANA LETTER YA */ \ + OP(L'ュ', LSHIFT(Key_8)) /* U+30e5, XKB_KEY_kana_yu, KATAKANA LETTER SMALL YU */ \ + OP(L'ユ', RALT(Key_8)) /* U+30e6, XKB_KEY_kana_YU, KATAKANA LETTER YU */ \ + OP(L'ョ', LSHIFT(Key_9)) /* U+30e7, XKB_KEY_kana_yo, KATAKANA LETTER SMALL YO */ \ + OP(L'ヨ', RALT(Key_9)) /* U+30e8, XKB_KEY_kana_YO, KATAKANA LETTER YO */ \ + OP(L'ラ', RALT(Key_O)) /* U+30e9, XKB_KEY_kana_RA, KATAKANA LETTER RA */ \ + OP(L'リ', RALT(Key_L)) /* U+30ea, XKB_KEY_kana_RI, KATAKANA LETTER RI */ \ + OP(L'ル', RALT(Key_Period)) /* U+30eb, XKB_KEY_kana_RU, KATAKANA LETTER RU */ \ + OP(L'レ', RALT(Key_Semicolon)) /* U+30ec, XKB_KEY_kana_RE, KATAKANA LETTER RE */ \ + OP(L'ワ', RALT(Key_0)) /* U+30ef, XKB_KEY_kana_WA, KATAKANA LETTER WA */ \ + OP(L'ヲ', LSHIFT(Key_0)) /* U+30f2, XKB_KEY_kana_WO, KATAKANA LETTER WO */ \ + OP(L'ン', RALT(Key_Y)) /* U+30f3, XKB_KEY_kana_N, KATAKANA LETTER N */ \ + OP(L'・', LSHIFT(Key_Slash)) /* U+30fb, XKB_KEY_kana_conjunctive, KATAKANA MIDDLE DOT */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_H, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_K, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Kana_Lock, Key_RightAlt) /* XKB_KEY_Kana_Lock, Kana Lock */ \ + OP(XKB_KEY_L, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Mode_switch, LSHIFT(Key_RightAlt)) /* XKB_KEY_Mode_switch, Character set switch */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_W, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_X, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_apostrophe, RALT(LSHIFT(Key_7))) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_Equals) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_at, Key_LeftBracket) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_braceright, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_bracketleft, Key_RightBracket) \ + OP(XKB_KEY_bracketright, Key_NonUsPound) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, Key_Quote) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_exclam, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kana_A, RALT(Key_3)) \ + OP(XKB_KEY_kana_CHI, RALT(Key_A)) /* XKB_KEY_kana_TI, deprecated */ \ + OP(XKB_KEY_kana_E, RALT(Key_5)) \ + OP(XKB_KEY_kana_FU, RALT(Key_2)) /* XKB_KEY_kana_HU, deprecated */ \ + OP(XKB_KEY_kana_HA, RALT(Key_F)) \ + OP(XKB_KEY_kana_HE, RALT(Key_Equals)) \ + OP(XKB_KEY_kana_HI, RALT(Key_V)) \ + OP(XKB_KEY_kana_HO, RALT(Key_Minus)) \ + OP(XKB_KEY_kana_I, RALT(Key_E)) \ + OP(XKB_KEY_kana_KA, RALT(Key_T)) \ + OP(XKB_KEY_kana_KE, RALT(Key_Quote)) \ + OP(XKB_KEY_kana_KI, RALT(Key_G)) \ + OP(XKB_KEY_kana_KO, RALT(Key_B)) \ + OP(XKB_KEY_kana_KU, RALT(Key_H)) \ + OP(XKB_KEY_kana_MA, RALT(Key_J)) \ + OP(XKB_KEY_kana_ME, RALT(Key_Slash)) \ + OP(XKB_KEY_kana_MI, RALT(Key_N)) \ + OP(XKB_KEY_kana_MO, RALT(Key_M)) \ + OP(XKB_KEY_kana_MU, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_kana_N, RALT(Key_Y)) \ + OP(XKB_KEY_kana_NA, RALT(Key_U)) \ + OP(XKB_KEY_kana_NE, RALT(Key_Comma)) \ + OP(XKB_KEY_kana_NI, RALT(Key_I)) \ + OP(XKB_KEY_kana_NO, RALT(Key_K)) \ + OP(XKB_KEY_kana_NU, RALT(Key_1)) \ + OP(XKB_KEY_kana_O, RALT(Key_6)) \ + OP(XKB_KEY_kana_RA, RALT(Key_O)) \ + OP(XKB_KEY_kana_RE, RALT(Key_Semicolon)) \ + OP(XKB_KEY_kana_RI, RALT(Key_L)) \ + OP(XKB_KEY_kana_RU, RALT(Key_Period)) \ + OP(XKB_KEY_kana_SA, RALT(Key_X)) \ + OP(XKB_KEY_kana_SE, RALT(Key_P)) \ + OP(XKB_KEY_kana_SHI, RALT(Key_D)) \ + OP(XKB_KEY_kana_SO, RALT(Key_C)) \ + OP(XKB_KEY_kana_SU, RALT(Key_R)) \ + OP(XKB_KEY_kana_TA, RALT(Key_Q)) \ + OP(XKB_KEY_kana_TE, RALT(Key_W)) \ + OP(XKB_KEY_kana_TO, RALT(Key_S)) \ + OP(XKB_KEY_kana_TSU, RALT(Key_Z)) /* XKB_KEY_kana_TU, deprecated */ \ + OP(XKB_KEY_kana_U, RALT(Key_4)) \ + OP(XKB_KEY_kana_WA, RALT(Key_0)) \ + OP(XKB_KEY_kana_WO, LSHIFT(Key_0)) \ + OP(XKB_KEY_kana_YA, RALT(Key_7)) \ + OP(XKB_KEY_kana_YO, RALT(Key_9)) \ + OP(XKB_KEY_kana_YU, RALT(Key_8)) \ + OP(XKB_KEY_kana_a, LSHIFT(Key_3)) \ + OP(XKB_KEY_kana_closingbracket, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_kana_comma, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_kana_conjunctive, LSHIFT(Key_Slash)) /* XKB_KEY_kana_middledot, deprecated */ \ + OP(XKB_KEY_kana_e, LSHIFT(Key_5)) \ + OP(XKB_KEY_kana_fullstop, LSHIFT(Key_Period)) \ + OP(XKB_KEY_kana_i, LSHIFT(Key_E)) \ + OP(XKB_KEY_kana_o, LSHIFT(Key_6)) \ + OP(XKB_KEY_kana_openingbracket, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_kana_tsu, LSHIFT(Key_Z)) /* XKB_KEY_kana_tu, deprecated */ \ + OP(XKB_KEY_kana_u, LSHIFT(Key_4)) \ + OP(XKB_KEY_kana_ya, LSHIFT(Key_7)) \ + OP(XKB_KEY_kana_yo, LSHIFT(Key_9)) \ + OP(XKB_KEY_kana_yu, LSHIFT(Key_8)) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_parenright, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_percent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_quotedbl, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_semivoicedsound, RALT(Key_RightBracket)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_voicedsound, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace jp { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace jp +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/jp/sun_type7/keymap.h b/src/kaleidoscope/host_keymap/linux/jp/sun_type7/keymap.h new file mode 100644 index 0000000000..d7d561d402 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/jp/sun_type7/keymap.h @@ -0,0 +1,433 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: jp +// variant: sun_type7 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Quote) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_Minus)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_LeftBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_Equals) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('`', LSHIFT(Key_LeftBracket)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('}', LSHIFT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_0)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Quote) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_Minus)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_LeftBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_Equals) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'`', LSHIFT(Key_LeftBracket)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'}', LSHIFT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_0)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, LSHIFT(Key_CapsLock)) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Eisu_toggle, Key_CapsLock) /* XKB_KEY_Eisu_toggle, Alphanumeric toggle */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_Execute, LALT(Key_PrintScreen)) /* XKB_KEY_Execute, Execute, run, do */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Kanji, LALT(Key_Backtick)) /* XKB_KEY_Kanji, Kanji, Kanji convert */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zenkaku_Hankaku, Key_Backtick) /* XKB_KEY_Zenkaku_Hankaku, Zenkaku/Hankaku toggle */ \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_7)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_Equals) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_0)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_at, Key_LeftBracket) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_bracketleft, Key_RightBracket) \ + OP(XKB_KEY_bracketright, Key_NonUsPound) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, Key_Quote) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_LeftBracket)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace jp { +namespace sun_type7 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type7 +} // namespace jp +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/jp/sun_type7_suncompat/keymap.h b/src/kaleidoscope/host_keymap/linux/jp/sun_type7_suncompat/keymap.h new file mode 100644 index 0000000000..bc1a8877e3 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/jp/sun_type7_suncompat/keymap.h @@ -0,0 +1,430 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: jp +// variant: sun_type7_suncompat + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Quote) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_Minus)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_LeftBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_Equals) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('`', LSHIFT(Key_LeftBracket)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('}', LSHIFT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_0)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Quote) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_Minus)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_LeftBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_Equals) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'`', LSHIFT(Key_LeftBracket)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'}', LSHIFT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_0)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Henkan_Mode, Key_Backtick) /* XKB_KEY_Henkan_Mode, Start/Stop Conversion */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_7)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_Equals) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_0)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_at, Key_LeftBracket) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_bracketleft, Key_RightBracket) \ + OP(XKB_KEY_bracketright, Key_NonUsPound) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, Key_Quote) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_LeftBracket)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace jp { +namespace sun_type7_suncompat { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type7_suncompat +} // namespace jp +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ke/kik/keymap.h b/src/kaleidoscope/host_keymap/linux/ke/kik/keymap.h new file mode 100644 index 0000000000..b6c8e50b86 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ke/kik/keymap.h @@ -0,0 +1,452 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ke +// variant: kik + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'̀', RALT(Key_Backtick)) \ + OP(L'́', RALT(Key_Quote)) \ + OP(L'̂', RALT(Key_6)) \ + OP(L'̃', RALT(LSHIFT(Key_Backtick))) \ + OP(L'̄', RALT(Key_Minus)) \ + OP(L'̆', RALT(Key_9)) \ + OP(L'̇', RALT(Key_8)) \ + OP(L'̈', RALT(LSHIFT(Key_Quote))) \ + OP(L'̌', RALT(Key_0)) \ + OP(L'̣', RALT(LSHIFT(Key_8))) \ + OP(L'̤', RALT(Key_Semicolon)) \ + OP(L'̱', RALT(LSHIFT(Key_Minus))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ke { +namespace kik { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace kik +} // namespace ke +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ke/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/ke/standard/keymap.h new file mode 100644 index 0000000000..07acd1863c --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ke/standard/keymap.h @@ -0,0 +1,452 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ke +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'̀', RALT(Key_Backtick)) \ + OP(L'́', RALT(Key_Quote)) \ + OP(L'̂', RALT(Key_6)) \ + OP(L'̃', RALT(LSHIFT(Key_Backtick))) \ + OP(L'̄', RALT(Key_Minus)) \ + OP(L'̆', RALT(Key_9)) \ + OP(L'̇', RALT(Key_8)) \ + OP(L'̈', RALT(LSHIFT(Key_Quote))) \ + OP(L'̌', RALT(Key_0)) \ + OP(L'̣', RALT(LSHIFT(Key_8))) \ + OP(L'̤', RALT(Key_Semicolon)) \ + OP(L'̱', RALT(LSHIFT(Key_Minus))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ke { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace ke +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/kg/phonetic/keymap.h b/src/kaleidoscope/host_keymap/linux/kg/phonetic/keymap.h new file mode 100644 index 0000000000..e672226e54 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/kg/phonetic/keymap.h @@ -0,0 +1,378 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: kg +// variant: phonetic + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Ё', LSHIFT(Key_Backtick)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_V)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_G)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_C)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Z)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_I)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_J)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_X)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_Comma)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_LeftBracket)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_RightBracket)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_Period)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_NonUsPound)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_Y)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_Quote)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Semicolon)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Equals)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Minus)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_V) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_G) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_C) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Z) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_I) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_J) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_X) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_Comma) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_LeftBracket) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_RightBracket) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_Period) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_NonUsPound) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_Y) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_Quote) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Semicolon) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Equals) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Minus) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Backtick) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'Ң', LSHIFT(Key_H)) /* U+04a2, XKB_KEY_Cyrillic_EN_descender, CYRILLIC CAPITAL LETTER EN WITH DESCENDER */ \ + OP(L'ң', Key_H) /* U+04a3, XKB_KEY_Cyrillic_en_descender, CYRILLIC SMALL LETTER EN WITH DESCENDER */ \ + OP(L'Ү', LSHIFT(Key_W)) /* U+04ae, XKB_KEY_Cyrillic_U_straight, CYRILLIC CAPITAL LETTER STRAIGHT U */ \ + OP(L'ү', Key_W) /* U+04af, XKB_KEY_Cyrillic_u_straight, CYRILLIC SMALL LETTER STRAIGHT U */ \ + OP(L'Ө', LSHIFT(Key_Q)) /* U+04e8, XKB_KEY_Cyrillic_O_bar, CYRILLIC CAPITAL LETTER BARRED O */ \ + OP(L'ө', Key_Q) /* U+04e9, XKB_KEY_Cyrillic_o_bar, CYRILLIC SMALL LETTER BARRED O */ \ + OP(L'№', LSHIFT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_EN_descender, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_O_bar, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_U_straight, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_e, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_en_descender, Key_H) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_G) \ + OP(XKB_KEY_Cyrillic_ha, Key_X) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_NonUsPound) \ + OP(XKB_KEY_Cyrillic_i, Key_I) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_io, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_o_bar, Key_Q) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_shcha, Key_Period) \ + OP(XKB_KEY_Cyrillic_shorti, Key_J) \ + OP(XKB_KEY_Cyrillic_softsign, Key_Quote) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_Comma) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_u_straight, Key_W) \ + OP(XKB_KEY_Cyrillic_ve, Key_V) \ + OP(XKB_KEY_Cyrillic_ya, Key_Minus) \ + OP(XKB_KEY_Cyrillic_yeru, Key_Y) \ + OP(XKB_KEY_Cyrillic_yu, Key_Equals) \ + OP(XKB_KEY_Cyrillic_ze, Key_Z) \ + OP(XKB_KEY_Cyrillic_zhe, Key_C) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_colon, LSHIFT(Key_6)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, LSHIFT(Key_8)) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_question, LSHIFT(Key_7)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_4)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace kg { +namespace phonetic { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace phonetic +} // namespace kg +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/kg/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/kg/standard/keymap.h new file mode 100644 index 0000000000..79af90789a --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/kg/standard/keymap.h @@ -0,0 +1,376 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: kg +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Ё', LSHIFT(Key_Backtick)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Backtick) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'Ң', LSHIFT(Key_Equals)) /* U+04a2, XKB_KEY_Cyrillic_EN_descender, CYRILLIC CAPITAL LETTER EN WITH DESCENDER */ \ + OP(L'ң', Key_Equals) /* U+04a3, XKB_KEY_Cyrillic_en_descender, CYRILLIC SMALL LETTER EN WITH DESCENDER */ \ + OP(L'Ү', LSHIFT(Key_NonUsPound)) /* U+04ae, XKB_KEY_Cyrillic_U_straight, CYRILLIC CAPITAL LETTER STRAIGHT U */ \ + OP(L'ү', Key_NonUsPound) /* U+04af, XKB_KEY_Cyrillic_u_straight, CYRILLIC SMALL LETTER STRAIGHT U */ \ + OP(L'Ө', LSHIFT(Key_Minus)) /* U+04e8, XKB_KEY_Cyrillic_O_bar, CYRILLIC CAPITAL LETTER BARRED O */ \ + OP(L'ө', Key_Minus) /* U+04e9, XKB_KEY_Cyrillic_o_bar, CYRILLIC SMALL LETTER BARRED O */ \ + OP(L'№', LSHIFT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_EN_descender, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_O_bar, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_U_straight, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_en_descender, Key_Equals) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_o_bar, Key_Minus) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_u_straight, Key_NonUsPound) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, LSHIFT(Key_6)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_question, LSHIFT(Key_7)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_4)) \ + OP(XKB_KEY_slash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace kg { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace kg +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/kh/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/kh/standard/keymap.h new file mode 100644 index 0000000000..4cf18365f0 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/kh/standard/keymap.h @@ -0,0 +1,397 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: kh +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', LSHIFT(Key_Spacebar)) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_3)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', RALT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', RALT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('x', RALT(Key_Minus)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('{', RALT(Key_9)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', LSHIFT(Key_Spacebar)) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_3)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', RALT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', RALT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'x', RALT(Key_Minus)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'{', RALT(Key_9)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', Key_Backtick) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', LSHIFT(Key_Backtick)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'ក', Key_K) \ + OP(L'ខ', Key_X) \ + OP(L'គ', LSHIFT(Key_K)) \ + OP(L'ឃ', LSHIFT(Key_X)) \ + OP(L'ង', Key_G) \ + OP(L'ច', Key_C) \ + OP(L'ឆ', Key_Q) \ + OP(L'ជ', LSHIFT(Key_C)) \ + OP(L'ឈ', LSHIFT(Key_Q)) \ + OP(L'ញ', LSHIFT(Key_J)) \ + OP(L'ដ', Key_D) \ + OP(L'ឋ', Key_Z) \ + OP(L'ឌ', LSHIFT(Key_D)) \ + OP(L'ឍ', LSHIFT(Key_Z)) \ + OP(L'ណ', LSHIFT(Key_N)) \ + OP(L'ត', Key_T) \ + OP(L'ថ', Key_F) \ + OP(L'ទ', LSHIFT(Key_T)) \ + OP(L'ធ', LSHIFT(Key_F)) \ + OP(L'ន', Key_N) \ + OP(L'ប', Key_B) \ + OP(L'ផ', Key_P) \ + OP(L'ព', LSHIFT(Key_B)) \ + OP(L'ភ', LSHIFT(Key_P)) \ + OP(L'ម', Key_M) \ + OP(L'យ', Key_Y) \ + OP(L'រ', Key_R) \ + OP(L'ល', Key_L) \ + OP(L'វ', Key_V) \ + OP(L'ឝ', RALT(Key_K)) \ + OP(L'ឞ', RALT(Key_B)) \ + OP(L'ស', Key_S) \ + OP(L'ហ', Key_H) \ + OP(L'ឡ', LSHIFT(Key_L)) \ + OP(L'អ', LSHIFT(Key_G)) \ + OP(L'ឥ', Key_Minus) \ + OP(L'ឦ', RALT(Key_I)) \ + OP(L'ឧ', LSHIFT(Key_RightBracket)) \ + OP(L'ឨ', RALT(Key_T)) \ + OP(L'ឩ', RALT(Key_LeftBracket)) \ + OP(L'ឪ', Key_RightBracket) \ + OP(L'ឫ', RALT(Key_R)) \ + OP(L'ឬ', LSHIFT(Key_R)) \ + OP(L'ឭ', LSHIFT(Key_NonUsPound)) \ + OP(L'ឮ', Key_NonUsPound) \ + OP(L'ឯ', RALT(Key_E)) \ + OP(L'ឰ', RALT(Key_P)) \ + OP(L'ឱ', RALT(Key_O)) \ + OP(L'ឲ', Key_Equals) \ + OP(L'ឳ', RALT(Key_RightBracket)) \ + OP(L'ា', Key_A) \ + OP(L'ិ', Key_I) \ + OP(L'ី', LSHIFT(Key_I)) \ + OP(L'ឹ', Key_W) \ + OP(L'ឺ', LSHIFT(Key_W)) \ + OP(L'ុ', Key_U) \ + OP(L'ូ', LSHIFT(Key_U)) \ + OP(L'ួ', LSHIFT(Key_Y)) \ + OP(L'ើ', Key_Semicolon) \ + OP(L'ឿ', LSHIFT(Key_LeftBracket)) \ + OP(L'ៀ', Key_LeftBracket) \ + OP(L'េ', Key_E) \ + OP(L'ែ', LSHIFT(Key_E)) \ + OP(L'ៃ', LSHIFT(Key_S)) \ + OP(L'ោ', Key_O) \ + OP(L'ៅ', LSHIFT(Key_O)) \ + OP(L'ំ', LSHIFT(Key_M)) \ + OP(L'ះ', LSHIFT(Key_H)) \ + OP(L'ៈ', RALT(Key_Quote)) \ + OP(L'៉', LSHIFT(Key_Quote)) \ + OP(L'៊', Key_Slash) \ + OP(L'់', Key_Quote) \ + OP(L'៌', LSHIFT(Key_Minus)) \ + OP(L'៍', LSHIFT(Key_6)) \ + OP(L'៎', RALT(Key_Equals)) \ + OP(L'៏', LSHIFT(Key_8)) \ + OP(L'័', LSHIFT(Key_7)) \ + OP(L'៑', RALT(Key_3)) \ + OP(L'្', Key_J) \ + OP(L'។', Key_Period) \ + OP(L'៕', LSHIFT(Key_Period)) \ + OP(L'៖', RALT(Key_Semicolon)) \ + OP(L'ៗ', LSHIFT(Key_2)) \ + OP(L'៙', RALT(Key_6)) \ + OP(L'៚', RALT(Key_7)) \ + OP(L'៛', LSHIFT(Key_4)) \ + OP(L'ៜ', RALT(Key_Q)) \ + OP(L'៝', RALT(Key_W)) \ + OP(L'០', Key_0) \ + OP(L'១', Key_1) \ + OP(L'២', Key_2) \ + OP(L'៣', Key_3) \ + OP(L'៤', Key_4) \ + OP(L'៥', Key_5) \ + OP(L'៦', Key_6) \ + OP(L'៧', Key_7) \ + OP(L'៨', Key_8) \ + OP(L'៩', Key_9) \ + OP(L'៰', RALT(LSHIFT(Key_0))) \ + OP(L'៱', RALT(LSHIFT(Key_1))) \ + OP(L'៲', RALT(LSHIFT(Key_2))) \ + OP(L'៳', RALT(LSHIFT(Key_3))) \ + OP(L'៴', RALT(LSHIFT(Key_4))) \ + OP(L'៵', RALT(LSHIFT(Key_5))) \ + OP(L'៶', RALT(LSHIFT(Key_6))) \ + OP(L'៷', RALT(LSHIFT(Key_7))) \ + OP(L'៸', RALT(LSHIFT(Key_8))) \ + OP(L'៹', RALT(LSHIFT(Key_9))) \ + OP(L'៻', LSHIFT(Key_Comma)) \ + OP(L'៼', Key_Comma) \ + OP(L'៽', LSHIFT(Key_V)) \ + OP(L'៾', LSHIFT(Key_Semicolon)) \ + OP(L'៿', LSHIFT(Key_A)) \ + OP(L'᧠', RALT(LSHIFT(Key_Q))) \ + OP(L'᧡', RALT(LSHIFT(Key_W))) \ + OP(L'᧢', RALT(LSHIFT(Key_E))) \ + OP(L'᧣', RALT(LSHIFT(Key_R))) \ + OP(L'᧤', RALT(LSHIFT(Key_T))) \ + OP(L'᧥', RALT(LSHIFT(Key_Y))) \ + OP(L'᧦', RALT(LSHIFT(Key_U))) \ + OP(L'᧧', RALT(LSHIFT(Key_I))) \ + OP(L'᧨', RALT(LSHIFT(Key_O))) \ + OP(L'᧩', RALT(LSHIFT(Key_P))) \ + OP(L'᧪', RALT(LSHIFT(Key_LeftBracket))) \ + OP(L'᧫', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'᧬', RALT(LSHIFT(Key_A))) \ + OP(L'᧭', RALT(LSHIFT(Key_S))) \ + OP(L'᧮', RALT(LSHIFT(Key_D))) \ + OP(L'᧯', RALT(LSHIFT(Key_F))) \ + OP(L'᧰', RALT(LSHIFT(Key_G))) \ + OP(L'᧱', RALT(LSHIFT(Key_H))) \ + OP(L'᧲', RALT(LSHIFT(Key_J))) \ + OP(L'᧳', RALT(LSHIFT(Key_K))) \ + OP(L'᧴', RALT(LSHIFT(Key_L))) \ + OP(L'᧵', RALT(LSHIFT(Key_Semicolon))) \ + OP(L'᧶', RALT(LSHIFT(Key_Quote))) \ + OP(L'᧷', RALT(LSHIFT(Key_Z))) \ + OP(L'᧸', RALT(LSHIFT(Key_X))) \ + OP(L'᧹', RALT(LSHIFT(Key_C))) \ + OP(L'᧺', RALT(LSHIFT(Key_V))) \ + OP(L'᧻', RALT(LSHIFT(Key_B))) \ + OP(L'᧼', RALT(LSHIFT(Key_N))) \ + OP(L'᧽', RALT(LSHIFT(Key_M))) \ + OP(L'᧾', RALT(LSHIFT(Key_Comma))) \ + OP(L'᧿', RALT(LSHIFT(Key_Period))) \ + OP(L'​', Key_Spacebar) \ + OP(L'‌', RALT(Key_1)) \ + OP(L'‍', RALT(Key_Backtick)) \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_asterisk, RALT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_9)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_comma, RALT(Key_Comma)) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_equal, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, Key_Backtick) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, RALT(Key_Period)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_3)) \ + OP(XKB_KEY_slash, RALT(Key_Slash)) \ + OP(XKB_KEY_space, LSHIFT(Key_Spacebar)) \ + OP(XKB_KEY_x, RALT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace kh { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace kh +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/kr/kr104/keymap.h b/src/kaleidoscope/host_keymap/linux/kr/kr104/keymap.h new file mode 100644 index 0000000000..3e91ae6ab2 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/kr/kr104/keymap.h @@ -0,0 +1,438 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: kr +// variant: kr104 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Hangul, Key_RightAlt) /* XKB_KEY_Hangul, Hangul start/stop(toggle) */ \ + OP(XKB_KEY_Hangul_Hanja, Key_RightControl) /* XKB_KEY_Hangul_Hanja, Start Hangul->Hanja Conversion */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace kr { +namespace kr104 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace kr104 +} // namespace kr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/kr/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/kr/standard/keymap.h new file mode 100644 index 0000000000..b7e54d922b --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/kr/standard/keymap.h @@ -0,0 +1,439 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: kr +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace kr { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace kr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/kr/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/kr/sun_type6/keymap.h new file mode 100644 index 0000000000..a2b0ba33c6 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/kr/sun_type6/keymap.h @@ -0,0 +1,439 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: kr +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Hangul, Key_RightAlt) /* XKB_KEY_Hangul, Hangul start/stop(toggle) */ \ + OP(XKB_KEY_Hangul_Hanja, Key_PcApplication) /* XKB_KEY_Hangul_Hanja, Start Hangul->Hanja Conversion */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace kr { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace kr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/kz/ext/keymap.h b/src/kaleidoscope/host_keymap/linux/kz/ext/keymap.h new file mode 100644 index 0000000000..f488f726bb --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/kz/ext/keymap.h @@ -0,0 +1,454 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: kz +// variant: ext + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_1) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(LSHIFT(Key_3))) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(LSHIFT(Key_4))) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(LSHIFT(Key_5))) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(LSHIFT(Key_7))) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', RALT(LSHIFT(Key_9))) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', RALT(LSHIFT(Key_0))) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_6) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_7) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_7)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_6)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', RALT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(LSHIFT(Key_2))) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_6))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', RALT(LSHIFT(Key_Minus))) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_1) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(LSHIFT(Key_3))) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(LSHIFT(Key_4))) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(LSHIFT(Key_5))) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(LSHIFT(Key_7))) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', RALT(LSHIFT(Key_9))) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', RALT(LSHIFT(Key_0))) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_6) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_7) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_7)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_6)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', RALT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(LSHIFT(Key_2))) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_6))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', RALT(LSHIFT(Key_Minus))) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsPound))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ё', LSHIFT(Key_Backtick)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'І', LSHIFT(Key_3)) /* U+0406, XKB_KEY_Ukrainian_I, CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Backtick) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'і', Key_3) /* U+0456, XKB_KEY_Ukrainian_i, CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'Ғ', LSHIFT(Key_5)) /* U+0492, XKB_KEY_Cyrillic_GHE_bar, CYRILLIC CAPITAL LETTER GHE WITH STROKE */ \ + OP(L'ғ', Key_5) /* U+0493, XKB_KEY_Cyrillic_ghe_bar, CYRILLIC SMALL LETTER GHE WITH STROKE */ \ + OP(L'Қ', LSHIFT(Key_0)) /* U+049a, XKB_KEY_Cyrillic_KA_descender, CYRILLIC CAPITAL LETTER KA WITH DESCENDER */ \ + OP(L'қ', Key_0) /* U+049b, XKB_KEY_Cyrillic_ka_descender, CYRILLIC SMALL LETTER KA WITH DESCENDER */ \ + OP(L'Ң', LSHIFT(Key_4)) /* U+04a2, XKB_KEY_Cyrillic_EN_descender, CYRILLIC CAPITAL LETTER EN WITH DESCENDER */ \ + OP(L'ң', Key_4) /* U+04a3, XKB_KEY_Cyrillic_en_descender, CYRILLIC SMALL LETTER EN WITH DESCENDER */ \ + OP(L'Ү', LSHIFT(Key_8)) /* U+04ae, XKB_KEY_Cyrillic_U_straight, CYRILLIC CAPITAL LETTER STRAIGHT U */ \ + OP(L'ү', Key_8) /* U+04af, XKB_KEY_Cyrillic_u_straight, CYRILLIC SMALL LETTER STRAIGHT U */ \ + OP(L'Ұ', LSHIFT(Key_9)) /* U+04b0, XKB_KEY_Cyrillic_U_straight_bar, CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE */ \ + OP(L'ұ', Key_9) /* U+04b1, XKB_KEY_Cyrillic_u_straight_bar, CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE */ \ + OP(L'Һ', LSHIFT(Key_Equals)) /* U+04ba, XKB_KEY_Cyrillic_SHHA, CYRILLIC CAPITAL LETTER SHHA */ \ + OP(L'һ', Key_Equals) /* U+04bb, XKB_KEY_Cyrillic_shha, CYRILLIC SMALL LETTER SHHA */ \ + OP(L'Ә', LSHIFT(Key_2)) /* U+04d8, XKB_KEY_Cyrillic_SCHWA, CYRILLIC CAPITAL LETTER SCHWA */ \ + OP(L'ә', Key_2) /* U+04d9, XKB_KEY_Cyrillic_schwa, CYRILLIC SMALL LETTER SCHWA */ \ + OP(L'Ө', LSHIFT(Key_Minus)) /* U+04e8, XKB_KEY_Cyrillic_O_bar, CYRILLIC CAPITAL LETTER BARRED O */ \ + OP(L'ө', Key_Minus) /* U+04e9, XKB_KEY_Cyrillic_o_bar, CYRILLIC SMALL LETTER BARRED O */ \ + OP(L'№', Key_Slash) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_0)) \ + OP(XKB_KEY_1, RALT(Key_1)) \ + OP(XKB_KEY_2, RALT(Key_2)) \ + OP(XKB_KEY_3, RALT(Key_3)) \ + OP(XKB_KEY_4, RALT(Key_4)) \ + OP(XKB_KEY_5, RALT(Key_5)) \ + OP(XKB_KEY_6, RALT(Key_6)) \ + OP(XKB_KEY_7, RALT(Key_7)) \ + OP(XKB_KEY_8, RALT(Key_8)) \ + OP(XKB_KEY_9, RALT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_EN_descender, LSHIFT(Key_4)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_GHE_bar, LSHIFT(Key_5)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_KA_descender, LSHIFT(Key_0)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_O_bar, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SCHWA, LSHIFT(Key_2)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHHA, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_U_straight, LSHIFT(Key_8)) \ + OP(XKB_KEY_Cyrillic_U_straight_bar, LSHIFT(Key_9)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_en_descender, Key_4) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ghe_bar, Key_5) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_ka_descender, Key_0) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_o_bar, Key_Minus) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_schwa, Key_2) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shha, Key_Equals) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_u_straight, Key_8) \ + OP(XKB_KEY_Cyrillic_u_straight_bar, Key_9) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Ukrainian_I, LSHIFT(Key_3)) /* XKB_KEY_Ukranian_I, deprecated */ \ + OP(XKB_KEY_Ukrainian_i, Key_3) /* XKB_KEY_Ukranian_i, deprecated */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_at, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_braceright, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_colon, LSHIFT(Key_7)) \ + OP(XKB_KEY_comma, Key_6) \ + OP(XKB_KEY_dollar, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_equal, RALT(Key_Equals)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, RALT(Key_Minus)) \ + OP(XKB_KEY_numbersign, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_numerosign, Key_Slash) \ + OP(XKB_KEY_parenleft, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_parenright, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_percent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_period, Key_7) \ + OP(XKB_KEY_plus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, Key_1) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_6)) \ + OP(XKB_KEY_slash, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, RALT(LSHIFT(Key_Minus))) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace kz { +namespace ext { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ext +} // namespace kz +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/kz/kazrus/keymap.h b/src/kaleidoscope/host_keymap/linux/kz/kazrus/keymap.h new file mode 100644 index 0000000000..cf65ba108e --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/kz/kazrus/keymap.h @@ -0,0 +1,378 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: kz +// variant: kazrus + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Ё', LSHIFT(Key_Backtick)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'І', LSHIFT(Key_X)) /* U+0406, XKB_KEY_Ukrainian_I, CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Backtick) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'і', Key_X) /* U+0456, XKB_KEY_Ukrainian_i, CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'Ғ', LSHIFT(Key_O)) /* U+0492, XKB_KEY_Cyrillic_GHE_bar, CYRILLIC CAPITAL LETTER GHE WITH STROKE */ \ + OP(L'ғ', Key_O) /* U+0493, XKB_KEY_Cyrillic_ghe_bar, CYRILLIC SMALL LETTER GHE WITH STROKE */ \ + OP(L'Қ', LSHIFT(Key_D)) /* U+049a, XKB_KEY_Cyrillic_KA_descender, CYRILLIC CAPITAL LETTER KA WITH DESCENDER */ \ + OP(L'қ', Key_D) /* U+049b, XKB_KEY_Cyrillic_ka_descender, CYRILLIC SMALL LETTER KA WITH DESCENDER */ \ + OP(L'Ң', LSHIFT(Key_W)) /* U+04a2, XKB_KEY_Cyrillic_EN_descender, CYRILLIC CAPITAL LETTER EN WITH DESCENDER */ \ + OP(L'ң', Key_W) /* U+04a3, XKB_KEY_Cyrillic_en_descender, CYRILLIC SMALL LETTER EN WITH DESCENDER */ \ + OP(L'Ү', LSHIFT(Key_M)) /* U+04ae, XKB_KEY_Cyrillic_U_straight, CYRILLIC CAPITAL LETTER STRAIGHT U */ \ + OP(L'ү', Key_M) /* U+04af, XKB_KEY_Cyrillic_u_straight, CYRILLIC SMALL LETTER STRAIGHT U */ \ + OP(L'Ұ', LSHIFT(Key_RightBracket)) /* U+04b0, XKB_KEY_Cyrillic_U_straight_bar, CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE */ \ + OP(L'ұ', Key_RightBracket) /* U+04b1, XKB_KEY_Cyrillic_u_straight_bar, CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE */ \ + OP(L'Ә', LSHIFT(Key_Quote)) /* U+04d8, XKB_KEY_Cyrillic_SCHWA, CYRILLIC CAPITAL LETTER SCHWA */ \ + OP(L'ә', Key_Quote) /* U+04d9, XKB_KEY_Cyrillic_schwa, CYRILLIC SMALL LETTER SCHWA */ \ + OP(L'Ө', LSHIFT(Key_A)) /* U+04e8, XKB_KEY_Cyrillic_O_bar, CYRILLIC CAPITAL LETTER BARRED O */ \ + OP(L'ө', Key_A) /* U+04e9, XKB_KEY_Cyrillic_o_bar, CYRILLIC SMALL LETTER BARRED O */ \ + OP(L'№', LSHIFT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_EN_descender, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_GHE_bar, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_KA_descender, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_O_bar, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SCHWA, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_U_straight, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_U_straight_bar, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_en_descender, Key_W) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ghe_bar, Key_O) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_ka_descender, Key_D) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_o_bar, Key_A) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_schwa, Key_Quote) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_u_straight, Key_M) \ + OP(XKB_KEY_Cyrillic_u_straight_bar, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Ukrainian_I, LSHIFT(Key_X)) /* XKB_KEY_Ukranian_I, deprecated */ \ + OP(XKB_KEY_Ukrainian_i, Key_X) /* XKB_KEY_Ukranian_i, deprecated */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_colon, LSHIFT(Key_6)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_7)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_4)) \ + OP(XKB_KEY_slash, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace kz { +namespace kazrus { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace kazrus +} // namespace kz +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/kz/ruskaz/keymap.h b/src/kaleidoscope/host_keymap/linux/kz/ruskaz/keymap.h new file mode 100644 index 0000000000..0ae06f1960 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/kz/ruskaz/keymap.h @@ -0,0 +1,378 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: kz +// variant: ruskaz + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Ё', LSHIFT(Key_Backtick)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Backtick) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'№', LSHIFT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_colon, LSHIFT(Key_6)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_7)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_4)) \ + OP(XKB_KEY_slash, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace kz { +namespace ruskaz { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ruskaz +} // namespace kz +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/kz/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/kz/standard/keymap.h new file mode 100644 index 0000000000..0e4382d5d6 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/kz/standard/keymap.h @@ -0,0 +1,388 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: kz +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_1) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('(', Key_Backtick) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_Backtick)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_6) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_7) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(':', LSHIFT(Key_7)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_6)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_1) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'(', Key_Backtick) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_Backtick)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_6) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_7) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L':', LSHIFT(Key_7)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_6)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'І', LSHIFT(Key_3)) /* U+0406, XKB_KEY_Ukrainian_I, CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'і', Key_3) /* U+0456, XKB_KEY_Ukrainian_i, CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'Ғ', LSHIFT(Key_5)) /* U+0492, XKB_KEY_Cyrillic_GHE_bar, CYRILLIC CAPITAL LETTER GHE WITH STROKE */ \ + OP(L'ғ', Key_5) /* U+0493, XKB_KEY_Cyrillic_ghe_bar, CYRILLIC SMALL LETTER GHE WITH STROKE */ \ + OP(L'Қ', LSHIFT(Key_0)) /* U+049a, XKB_KEY_Cyrillic_KA_descender, CYRILLIC CAPITAL LETTER KA WITH DESCENDER */ \ + OP(L'қ', Key_0) /* U+049b, XKB_KEY_Cyrillic_ka_descender, CYRILLIC SMALL LETTER KA WITH DESCENDER */ \ + OP(L'Ң', LSHIFT(Key_4)) /* U+04a2, XKB_KEY_Cyrillic_EN_descender, CYRILLIC CAPITAL LETTER EN WITH DESCENDER */ \ + OP(L'ң', Key_4) /* U+04a3, XKB_KEY_Cyrillic_en_descender, CYRILLIC SMALL LETTER EN WITH DESCENDER */ \ + OP(L'Ү', LSHIFT(Key_8)) /* U+04ae, XKB_KEY_Cyrillic_U_straight, CYRILLIC CAPITAL LETTER STRAIGHT U */ \ + OP(L'ү', Key_8) /* U+04af, XKB_KEY_Cyrillic_u_straight, CYRILLIC SMALL LETTER STRAIGHT U */ \ + OP(L'Ұ', LSHIFT(Key_9)) /* U+04b0, XKB_KEY_Cyrillic_U_straight_bar, CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE */ \ + OP(L'ұ', Key_9) /* U+04b1, XKB_KEY_Cyrillic_u_straight_bar, CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE */ \ + OP(L'Һ', LSHIFT(Key_Equals)) /* U+04ba, XKB_KEY_Cyrillic_SHHA, CYRILLIC CAPITAL LETTER SHHA */ \ + OP(L'һ', Key_Equals) /* U+04bb, XKB_KEY_Cyrillic_shha, CYRILLIC SMALL LETTER SHHA */ \ + OP(L'Ә', LSHIFT(Key_2)) /* U+04d8, XKB_KEY_Cyrillic_SCHWA, CYRILLIC CAPITAL LETTER SCHWA */ \ + OP(L'ә', Key_2) /* U+04d9, XKB_KEY_Cyrillic_schwa, CYRILLIC SMALL LETTER SCHWA */ \ + OP(L'Ө', LSHIFT(Key_Minus)) /* U+04e8, XKB_KEY_Cyrillic_O_bar, CYRILLIC CAPITAL LETTER BARRED O */ \ + OP(L'ө', Key_Minus) /* U+04e9, XKB_KEY_Cyrillic_o_bar, CYRILLIC SMALL LETTER BARRED O */ \ + OP(L'№', Key_Slash) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_EN_descender, LSHIFT(Key_4)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_GHE_bar, LSHIFT(Key_5)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_KA_descender, LSHIFT(Key_0)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_O_bar, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SCHWA, LSHIFT(Key_2)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHHA, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_U_straight, LSHIFT(Key_8)) \ + OP(XKB_KEY_Cyrillic_U_straight_bar, LSHIFT(Key_9)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_en_descender, Key_4) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ghe_bar, Key_5) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_ka_descender, Key_0) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_o_bar, Key_Minus) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_schwa, Key_2) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shha, Key_Equals) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_u_straight, Key_8) \ + OP(XKB_KEY_Cyrillic_u_straight_bar, Key_9) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Ukrainian_I, LSHIFT(Key_3)) /* XKB_KEY_Ukranian_I, deprecated */ \ + OP(XKB_KEY_Ukrainian_i, Key_3) /* XKB_KEY_Ukranian_i, deprecated */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_colon, LSHIFT(Key_7)) \ + OP(XKB_KEY_comma, Key_6) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_numerosign, Key_Slash) \ + OP(XKB_KEY_parenleft, Key_Backtick) \ + OP(XKB_KEY_parenright, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_period, Key_7) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, Key_1) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_6)) \ + OP(XKB_KEY_slash, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace kz { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace kz +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/la/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/la/standard/keymap.h new file mode 100644 index 0000000000..35db8cfb25 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/la/standard/keymap.h @@ -0,0 +1,302 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: la +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_K)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('$', LSHIFT(Key_Period)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Semicolon)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', LSHIFT(Key_X)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_Slash)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_F)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_D)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(':', LSHIFT(Key_G)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_S)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_Quote)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_L)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('_', LSHIFT(Key_R)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Comma)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_K)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'$', LSHIFT(Key_Period)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Semicolon)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', LSHIFT(Key_X)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_Slash)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_F)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_D)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L':', LSHIFT(Key_G)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_S)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_Quote)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_L)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'_', LSHIFT(Key_R)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Comma)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'ກ', Key_D) \ + OP(L'ຂ', Key_0) \ + OP(L'ຄ', Key_7) \ + OP(L'ງ', Key_Quote) \ + OP(L'ຈ', Key_9) \ + OP(L'ຊ', Key_Minus) \ + OP(L'ຍ', Key_P) \ + OP(L'ດ', Key_F) \ + OP(L'ຕ', Key_8) \ + OP(L'ຖ', Key_4) \ + OP(L'ທ', Key_M) \ + OP(L'ນ', Key_O) \ + OP(L'ບ', Key_LeftBracket) \ + OP(L'ປ', Key_X) \ + OP(L'ຜ', Key_Z) \ + OP(L'ຝ', Key_Slash) \ + OP(L'ພ', Key_R) \ + OP(L'ຟ', Key_2) \ + OP(L'ມ', Key_Comma) \ + OP(L'ຢ', Key_1) \ + OP(L'ຣ', Key_I) \ + OP(L'ລ', Key_RightBracket) \ + OP(L'ວ', Key_Semicolon) \ + OP(L'ສ', Key_L) \ + OP(L'ຫ', Key_S) \ + OP(L'ອ', Key_V) \ + OP(L'ຮ', LSHIFT(Key_I)) \ + OP(L'ຯ', LSHIFT(Key_C)) \ + OP(L'ະ', Key_T) \ + OP(L'ັ', Key_A) \ + OP(L'າ', Key_K) \ + OP(L'ຳ', Key_E) \ + OP(L'ິ', Key_Y) \ + OP(L'ີ', Key_U) \ + OP(L'ຶ', Key_B) \ + OP(L'ື', Key_N) \ + OP(L'ຸ', Key_5) \ + OP(L'ູ', Key_6) \ + OP(L'ົ', Key_Q) \ + OP(L'ຼ', LSHIFT(Key_6)) \ + OP(L'ຽ', LSHIFT(Key_P)) \ + OP(L'ເ', Key_G) \ + OP(L'ແ', Key_C) \ + OP(L'ໂ', Key_3) \ + OP(L'ໃ', Key_Period) \ + OP(L'ໄ', Key_W) \ + OP(L'ໆ', LSHIFT(Key_M)) \ + OP(L'່', Key_J) \ + OP(L'້', Key_H) \ + OP(L'໊', LSHIFT(Key_H)) \ + OP(L'໋', LSHIFT(Key_J)) \ + OP(L'໌', LSHIFT(Key_5)) \ + OP(L'ໍ', Key_Equals) \ + OP(L'໐', LSHIFT(Key_W)) \ + OP(L'໑', LSHIFT(Key_1)) \ + OP(L'໒', LSHIFT(Key_2)) \ + OP(L'໓', LSHIFT(Key_3)) \ + OP(L'໔', LSHIFT(Key_4)) \ + OP(L'໕', LSHIFT(Key_7)) \ + OP(L'໖', LSHIFT(Key_8)) \ + OP(L'໗', LSHIFT(Key_9)) \ + OP(L'໘', LSHIFT(Key_0)) \ + OP(L'໙', LSHIFT(Key_Minus)) \ + OP(L'ໜ', Key_NonUsPound) \ + OP(L'ໝ', LSHIFT(Key_NonUsPound)) \ + OP(L'‍', Key_Backtick) \ + OP(L'₭', LSHIFT(Key_Z)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_colon, LSHIFT(Key_G)) \ + OP(XKB_KEY_comma, LSHIFT(Key_F)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_Period)) \ + OP(XKB_KEY_equal, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_K)) \ + OP(XKB_KEY_grave, LSHIFT(Key_Comma)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_X)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_percent, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_period, LSHIFT(Key_D)) \ + OP(XKB_KEY_plus, LSHIFT(Key_T)) \ + OP(XKB_KEY_question, LSHIFT(Key_L)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_S)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_R)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace la { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace la +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/la/stea/keymap.h b/src/kaleidoscope/host_keymap/linux/la/stea/keymap.h new file mode 100644 index 0000000000..bca2545f50 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/la/stea/keymap.h @@ -0,0 +1,323 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: la +// variant: stea + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_K)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_Backtick) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('$', LSHIFT(Key_Period)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Semicolon)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('\'', LSHIFT(Key_Backtick)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_X)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_Slash)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_KeypadDot) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_D)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsPound) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_W)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_7)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_8)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_9)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_0)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_Minus)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_G)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_S)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_Quote)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_L)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', LSHIFT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', LSHIFT(Key_R)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('x', LSHIFT(Key_V)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_K)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_Backtick) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'$', LSHIFT(Key_Period)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Semicolon)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'\'', LSHIFT(Key_Backtick)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_X)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_Slash)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_KeypadDot) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_D)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsPound) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_W)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_7)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_8)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_9)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_0)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_Minus)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_G)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_S)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_Quote)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_L)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', LSHIFT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', LSHIFT(Key_R)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'x', LSHIFT(Key_V)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ກ', Key_D) \ + OP(L'ຂ', Key_0) \ + OP(L'ຄ', Key_7) \ + OP(L'ງ', Key_Quote) \ + OP(L'ຈ', Key_9) \ + OP(L'ຊ', Key_Minus) \ + OP(L'ຍ', Key_P) \ + OP(L'ດ', Key_F) \ + OP(L'ຕ', Key_8) \ + OP(L'ຖ', Key_4) \ + OP(L'ທ', Key_M) \ + OP(L'ນ', Key_O) \ + OP(L'ບ', Key_LeftBracket) \ + OP(L'ປ', Key_X) \ + OP(L'ຜ', Key_Z) \ + OP(L'ຝ', Key_Slash) \ + OP(L'ພ', Key_R) \ + OP(L'ຟ', Key_2) \ + OP(L'ມ', Key_Comma) \ + OP(L'ຢ', Key_1) \ + OP(L'ຣ', LSHIFT(Key_I)) \ + OP(L'ລ', Key_RightBracket) \ + OP(L'ວ', Key_Semicolon) \ + OP(L'ສ', Key_L) \ + OP(L'ຫ', Key_S) \ + OP(L'ອ', Key_V) \ + OP(L'ຮ', Key_I) \ + OP(L'ຯ', LSHIFT(Key_C)) \ + OP(L'ະ', Key_T) \ + OP(L'ັ', Key_A) \ + OP(L'າ', Key_K) \ + OP(L'ຳ', Key_E) \ + OP(L'ິ', Key_Y) \ + OP(L'ີ', Key_U) \ + OP(L'ຶ', Key_B) \ + OP(L'ື', Key_N) \ + OP(L'ຸ', Key_5) \ + OP(L'ູ', Key_6) \ + OP(L'ົ', Key_Q) \ + OP(L'ຼ', LSHIFT(Key_6)) \ + OP(L'ຽ', LSHIFT(Key_P)) \ + OP(L'ເ', Key_G) \ + OP(L'ແ', Key_C) \ + OP(L'ໂ', Key_3) \ + OP(L'ໃ', Key_Period) \ + OP(L'ໄ', Key_W) \ + OP(L'ໆ', LSHIFT(Key_M)) \ + OP(L'່', Key_J) \ + OP(L'້', Key_H) \ + OP(L'໊', LSHIFT(Key_H)) \ + OP(L'໋', LSHIFT(Key_J)) \ + OP(L'໌', LSHIFT(Key_5)) \ + OP(L'ໍ', Key_Equals) \ + OP(L'໐', RALT(Key_0)) \ + OP(L'໑', RALT(Key_1)) \ + OP(L'໒', RALT(Key_2)) \ + OP(L'໓', RALT(Key_3)) \ + OP(L'໔', RALT(Key_4)) \ + OP(L'໕', RALT(Key_5)) \ + OP(L'໖', RALT(Key_6)) \ + OP(L'໗', RALT(Key_7)) \ + OP(L'໘', RALT(Key_8)) \ + OP(L'໙', RALT(Key_9)) \ + OP(L'ໜ', LSHIFT(Key_O)) \ + OP(L'ໝ', LSHIFT(Key_Comma)) \ + OP(L'₭', LSHIFT(Key_Z)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_W)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_7)) \ + OP(XKB_KEY_6, LSHIFT(Key_8)) \ + OP(XKB_KEY_7, LSHIFT(Key_9)) \ + OP(XKB_KEY_8, LSHIFT(Key_0)) \ + OP(XKB_KEY_9, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_Backtick)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_E)) \ + OP(XKB_KEY_backslash, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_G)) \ + OP(XKB_KEY_comma, Key_KeypadDot) \ + OP(XKB_KEY_dollar, LSHIFT(Key_Period)) \ + OP(XKB_KEY_equal, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_K)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_X)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_percent, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_period, LSHIFT(Key_D)) \ + OP(XKB_KEY_plus, LSHIFT(Key_T)) \ + OP(XKB_KEY_question, LSHIFT(Key_L)) \ + OP(XKB_KEY_quotedbl, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_S)) \ + OP(XKB_KEY_slash, Key_NonUsPound) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_R)) \ + OP(XKB_KEY_x, LSHIFT(Key_V)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace la { +namespace stea { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace stea +} // namespace la +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/latam/deadtilde/keymap.h b/src/kaleidoscope/host_keymap/linux/latam/deadtilde/keymap.h new file mode 100644 index 0000000000..a016397eda --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/latam/deadtilde/keymap.h @@ -0,0 +1,566 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: latam +// variant: deadtilde + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', Key_Quote) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', Key_NonUsPound) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', Key_Quote) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', Key_NonUsPound) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', LSHIFT(Key_Equals)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_3)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', Key_Equals) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', LSHIFT(Key_Semicolon)) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', Key_Semicolon) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_4)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, Key_Backtick) \ + OP(XKB_KEY_braceleft, Key_Quote) \ + OP(XKB_KEY_braceright, Key_NonUsPound) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_LeftBracket) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_ntilde, Key_Semicolon) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_3)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, Key_Equals) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace latam { +namespace deadtilde { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace deadtilde +} // namespace latam +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/latam/dvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/latam/dvorak/keymap.h new file mode 100644 index 0000000000..6d2fa732af --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/latam/dvorak/keymap.h @@ -0,0 +1,548 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: latam +// variant: dvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Z) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Q) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_W)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_O)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_J)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Z)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_O) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_J) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', Key_Quote) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', Key_NonUsPound) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Z) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Q) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_W)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_O)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_J)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Z)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_O) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_J) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', Key_Quote) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', Key_NonUsPound) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', LSHIFT(Key_Equals)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_I)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_P)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_X)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_T)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', RALT(LSHIFT(Key_Semicolon))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_I))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_NonUsBackslashAndPipe)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'­', RALT(Key_Z)) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'®', RALT(Key_J)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_Z))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_3)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'»', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', Key_Equals) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Å', RALT(LSHIFT(Key_F))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_H))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', LSHIFT(Key_E)) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(Key_B)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_S))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_K))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Semicolon)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'å', RALT(Key_F)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_H)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', Key_E) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'÷', RALT(LSHIFT(Key_B))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_S)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_K)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Đ', RALT(LSHIFT(Key_U))) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_U)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_O))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_O)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ĸ', RALT(Key_V)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_E))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_E)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_L))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_L)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_G))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_G)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_Y))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_Y)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'€', RALT(Key_D)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_H))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_D)) \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_O)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, LSHIFT(Key_E)) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_J)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_K))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_F)) \ + OP(XKB_KEY_asciitilde, RALT(Key_4)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, Key_Backtick) \ + OP(XKB_KEY_braceleft, Key_Quote) \ + OP(XKB_KEY_braceright, Key_NonUsPound) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_cent, RALT(Key_I)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Q)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_currency, RALT(Key_X)) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_LeftBracket) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_dstroke, RALT(Key_U)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_eng, RALT(Key_L)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_H)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_h, Key_O) \ + OP(XKB_KEY_hstroke, RALT(Key_O)) \ + OP(XKB_KEY_hyphen, RALT(Key_Z)) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_kra, RALT(Key_V)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_E)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_minus, Key_Z) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(Key_B)) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_ntilde, Key_E) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_oe, RALT(Key_G)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_oslash, RALT(Key_S)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Q) \ + OP(XKB_KEY_periodcentered, RALT(Key_3)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, Key_Equals) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_J) \ + OP(XKB_KEY_registered, RALT(Key_J)) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_W)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Semicolon)) \ + OP(XKB_KEY_sterling, RALT(Key_P)) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_thorn, RALT(Key_K)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_Y)) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Z)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_yen, RALT(Key_T)) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace latam { +namespace dvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak +} // namespace latam +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/latam/nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/latam/nodeadkeys/keymap.h new file mode 100644 index 0000000000..40f48eb823 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/latam/nodeadkeys/keymap.h @@ -0,0 +1,581 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: latam +// variant: nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_LeftBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_LeftBracket) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_LeftBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_LeftBracket) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', LSHIFT(Key_Equals)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', LSHIFT(Key_Quote)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_RightBracket))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'´', Key_Quote) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_3)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¸', RALT(Key_Equals)) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', Key_Equals) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_NonUsPound)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', LSHIFT(Key_Semicolon)) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_NonUsPound) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', Key_Semicolon) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'˘', RALT(LSHIFT(Key_NonUsPound))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_Slash))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_Equals))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_Semicolon))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_acute, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_asciitilde, RALT(Key_4)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, Key_Backtick) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_NonUsPound) \ + OP(XKB_KEY_cedilla, RALT(Key_Equals)) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_diaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_LeftBracket) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_ntilde, Key_Semicolon) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_3)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, Key_Equals) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace latam { +namespace nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace nodeadkeys +} // namespace latam +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/latam/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/latam/standard/keymap.h new file mode 100644 index 0000000000..c29e46bd70 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/latam/standard/keymap.h @@ -0,0 +1,565 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: latam +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', Key_Quote) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', Key_NonUsPound) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', Key_Quote) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', Key_NonUsPound) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', LSHIFT(Key_Equals)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_3)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', Key_Equals) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', LSHIFT(Key_Semicolon)) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', Key_Semicolon) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_4)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, Key_Backtick) \ + OP(XKB_KEY_braceleft, Key_Quote) \ + OP(XKB_KEY_braceright, Key_NonUsPound) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_LeftBracket) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_ntilde, Key_Semicolon) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_3)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, Key_Equals) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace latam { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace latam +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/latam/sundeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/latam/sundeadkeys/keymap.h new file mode 100644 index 0000000000..add8fe338a --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/latam/sundeadkeys/keymap.h @@ -0,0 +1,565 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: latam +// variant: sundeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', Key_NonUsPound) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_RightBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', Key_NonUsPound) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_4)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', LSHIFT(Key_Equals)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_3)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', Key_Equals) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', LSHIFT(Key_Semicolon)) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', Key_Semicolon) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_4)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, Key_Backtick) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, Key_NonUsPound) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_Quote)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_LeftBracket) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_ntilde, Key_Semicolon) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_3)) \ + OP(XKB_KEY_plus, Key_RightBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, Key_Equals) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace latam { +namespace sundeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sundeadkeys +} // namespace latam +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lk/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/lk/standard/keymap.h new file mode 100644 index 0000000000..94ec4b050a --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lk/standard/keymap.h @@ -0,0 +1,454 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lk +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', LSHIFT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ං', RALT(Key_N)) /* U+0d82, XKB_KEY_Sinh_ng, SINHALA ANUSVARAYA */ \ + OP(L'ඃ', LSHIFT(Key_H)) /* U+0d83, XKB_KEY_Sinh_h2, SINHALA VISARGAYA */ \ + OP(L'අ', Key_A) /* U+0d85, XKB_KEY_Sinh_a, SINHALA AYANNA */ \ + OP(L'ආ', LSHIFT(Key_A)) /* U+0d86, XKB_KEY_Sinh_aa, SINHALA AAYANNA */ \ + OP(L'ඇ', Key_W) /* U+0d87, XKB_KEY_Sinh_ae, SINHALA AEYANNA */ \ + OP(L'ඈ', LSHIFT(Key_W)) /* U+0d88, XKB_KEY_Sinh_aee, SINHALA AEEYANNA */ \ + OP(L'ඉ', Key_I) /* U+0d89, XKB_KEY_Sinh_i, SINHALA IYANNA */ \ + OP(L'ඊ', LSHIFT(Key_I)) /* U+0d8a, XKB_KEY_Sinh_ii, SINHALA IIYANNA */ \ + OP(L'උ', Key_U) /* U+0d8b, XKB_KEY_Sinh_u, SINHALA UYANNA */ \ + OP(L'ඌ', LSHIFT(Key_U)) /* U+0d8c, XKB_KEY_Sinh_uu, SINHALA UUYANNA */ \ + OP(L'ඍ', Key_Q) /* U+0d8d, XKB_KEY_Sinh_ri, SINHALA IRUYANNA */ \ + OP(L'ඎ', LSHIFT(Key_Q)) /* U+0d8e, XKB_KEY_Sinh_rii, SINHALA IRUUYANNA */ \ + OP(L'ඏ', RALT(Key_K)) /* U+0d8f, XKB_KEY_Sinh_lu, SINHALA ILUYANNA */ \ + OP(L'ඐ', RALT(LSHIFT(Key_K))) /* U+0d90, XKB_KEY_Sinh_luu, SINHALA ILUUYANNA */ \ + OP(L'එ', Key_E) /* U+0d91, XKB_KEY_Sinh_e, SINHALA EYANNA */ \ + OP(L'ඒ', LSHIFT(Key_E)) /* U+0d92, XKB_KEY_Sinh_ee, SINHALA EEYANNA */ \ + OP(L'ඓ', RALT(LSHIFT(Key_F))) /* U+0d93, XKB_KEY_Sinh_ai, SINHALA AIYANNA */ \ + OP(L'ඔ', Key_O) /* U+0d94, XKB_KEY_Sinh_o, SINHALA OYANNA */ \ + OP(L'ඕ', LSHIFT(Key_O)) /* U+0d95, XKB_KEY_Sinh_oo, SINHALA OOYANNA */ \ + OP(L'ඖ', RALT(LSHIFT(Key_H))) /* U+0d96, XKB_KEY_Sinh_au, SINHALA AUYANNA */ \ + OP(L'ක', Key_K) /* U+0d9a, XKB_KEY_Sinh_ka, SINHALA KAYANNA */ \ + OP(L'ඛ', LSHIFT(Key_K)) /* U+0d9b, XKB_KEY_Sinh_kha, SINHALA MAHA. KAYANNA */ \ + OP(L'ග', Key_G) /* U+0d9c, XKB_KEY_Sinh_ga, SINHALA GAYANNA */ \ + OP(L'ඝ', LSHIFT(Key_G)) /* U+0d9d, XKB_KEY_Sinh_gha, SINHALA MAHA. GAYANNA */ \ + OP(L'ඞ', RALT(LSHIFT(Key_N))) /* U+0d9e, XKB_KEY_Sinh_ng2, SINHALA KANTAJA NAASIKYAYA */ \ + OP(L'ඟ', RALT(Key_G)) /* U+0d9f, XKB_KEY_Sinh_nga, SINHALA SANYAKA GAYANNA */ \ + OP(L'ච', Key_C) /* U+0da0, XKB_KEY_Sinh_ca, SINHALA CAYANNA */ \ + OP(L'ඡ', LSHIFT(Key_C)) /* U+0da1, XKB_KEY_Sinh_cha, SINHALA MAHA. CAYANNA */ \ + OP(L'ජ', Key_J) /* U+0da2, XKB_KEY_Sinh_ja, SINHALA JAYANNA */ \ + OP(L'ඣ', LSHIFT(Key_J)) /* U+0da3, XKB_KEY_Sinh_jha, SINHALA MAHA. JAYANNA */ \ + OP(L'ඤ', Key_Z) /* U+0da4, XKB_KEY_Sinh_nya, SINHALA TAALUJA NAASIKYAYA */ \ + OP(L'ඥ', LSHIFT(Key_Z)) /* U+0da5, XKB_KEY_Sinh_jnya, SINHALA TAALUJA SANYOOGA NAASIKYAYA */ \ + OP(L'ඦ', RALT(Key_J)) /* U+0da6, XKB_KEY_Sinh_nja, SINHALA SANYAKA JAYANNA */ \ + OP(L'ට', RALT(Key_T)) /* U+0da7, XKB_KEY_Sinh_tta, SINHALA TTAYANNA */ \ + OP(L'ඨ', RALT(LSHIFT(Key_T))) /* U+0da8, XKB_KEY_Sinh_ttha, SINHALA MAHA. TTAYANNA */ \ + OP(L'ඩ', RALT(Key_D)) /* U+0da9, XKB_KEY_Sinh_dda, SINHALA DDAYANNA */ \ + OP(L'ඪ', RALT(LSHIFT(Key_D))) /* U+0daa, XKB_KEY_Sinh_ddha, SINHALA MAHA. DDAYANNA */ \ + OP(L'ණ', LSHIFT(Key_N)) /* U+0dab, XKB_KEY_Sinh_nna, SINHALA MUURDHAJA NAYANNA */ \ + OP(L'ඬ', LSHIFT(Key_X)) /* U+0dac, XKB_KEY_Sinh_ndda, SINHALA SANYAKA DDAYANNA */ \ + OP(L'ත', Key_T) /* U+0dad, XKB_KEY_Sinh_tha, SINHALA TAYANNA */ \ + OP(L'ථ', LSHIFT(Key_T)) /* U+0dae, XKB_KEY_Sinh_thha, SINHALA MAHA. TAYANNA */ \ + OP(L'ද', Key_D) /* U+0daf, XKB_KEY_Sinh_dha, SINHALA DAYANNA */ \ + OP(L'ධ', LSHIFT(Key_D)) /* U+0db0, XKB_KEY_Sinh_dhha, SINHALA MAHA. DAYANNA */ \ + OP(L'න', Key_N) /* U+0db1, XKB_KEY_Sinh_na, SINHALA DANTAJA NAYANNA */ \ + OP(L'ඳ', Key_X) /* U+0db3, XKB_KEY_Sinh_ndha, SINHALA SANYAKA DAYANNA */ \ + OP(L'ප', Key_P) /* U+0db4, XKB_KEY_Sinh_pa, SINHALA PAYANNA */ \ + OP(L'ඵ', LSHIFT(Key_P)) /* U+0db5, XKB_KEY_Sinh_pha, SINHALA MAHA. PAYANNA */ \ + OP(L'බ', Key_B) /* U+0db6, XKB_KEY_Sinh_ba, SINHALA BAYANNA */ \ + OP(L'භ', LSHIFT(Key_B)) /* U+0db7, XKB_KEY_Sinh_bha, SINHALA MAHA. BAYANNA */ \ + OP(L'ම', Key_M) /* U+0db8, XKB_KEY_Sinh_ma, SINHALA MAYANNA */ \ + OP(L'ඹ', LSHIFT(Key_M)) /* U+0db9, XKB_KEY_Sinh_mba, SINHALA AMBA BAYANNA */ \ + OP(L'ය', Key_Y) /* U+0dba, XKB_KEY_Sinh_ya, SINHALA YAYANNA */ \ + OP(L'ර', Key_R) /* U+0dbb, XKB_KEY_Sinh_ra, SINHALA RAYANNA */ \ + OP(L'ල', Key_L) /* U+0dbd, XKB_KEY_Sinh_la, SINHALA DANTAJA LAYANNA */ \ + OP(L'ව', Key_V) /* U+0dc0, XKB_KEY_Sinh_va, SINHALA VAYANNA */ \ + OP(L'ශ', LSHIFT(Key_S)) /* U+0dc1, XKB_KEY_Sinh_sha, SINHALA TAALUJA SAYANNA */ \ + OP(L'ෂ', RALT(Key_S)) /* U+0dc2, XKB_KEY_Sinh_ssha, SINHALA MUURDHAJA SAYANNA */ \ + OP(L'ස', Key_S) /* U+0dc3, XKB_KEY_Sinh_sa, SINHALA DANTAJA SAYANNA */ \ + OP(L'හ', Key_H) /* U+0dc4, XKB_KEY_Sinh_ha, SINHALA HAYANNA */ \ + OP(L'ළ', LSHIFT(Key_L)) /* U+0dc5, XKB_KEY_Sinh_lla, SINHALA MUURDHAJA LAYANNA */ \ + OP(L'ෆ', Key_F) /* U+0dc6, XKB_KEY_Sinh_fa, SINHALA FAYANNA */ \ + OP(L'්', LSHIFT(Key_R)) /* U+0dca, XKB_KEY_Sinh_al, SINHALA AL-LAKUNA */ \ + OP(L'ා', RALT(LSHIFT(Key_A))) /* U+0dcf, XKB_KEY_Sinh_aa2, SINHALA AELA-PILLA */ \ + OP(L'ැ', RALT(Key_W)) /* U+0dd0, XKB_KEY_Sinh_ae2, SINHALA AEDA-PILLA */ \ + OP(L'ෑ', RALT(LSHIFT(Key_W))) /* U+0dd1, XKB_KEY_Sinh_aee2, SINHALA DIGA AEDA-PILLA */ \ + OP(L'ි', RALT(Key_I)) /* U+0dd2, XKB_KEY_Sinh_i2, SINHALA IS-PILLA */ \ + OP(L'ී', RALT(LSHIFT(Key_I))) /* U+0dd3, XKB_KEY_Sinh_ii2, SINHALA DIGA IS-PILLA */ \ + OP(L'ු', RALT(Key_U)) /* U+0dd4, XKB_KEY_Sinh_u2, SINHALA PAA-PILLA */ \ + OP(L'ූ', RALT(LSHIFT(Key_U))) /* U+0dd6, XKB_KEY_Sinh_uu2, SINHALA DIGA PAA-PILLA */ \ + OP(L'ෘ', RALT(Key_Q)) /* U+0dd8, XKB_KEY_Sinh_ru2, SINHALA GAETTA-PILLA */ \ + OP(L'ෙ', RALT(Key_E)) /* U+0dd9, XKB_KEY_Sinh_e2, SINHALA KOMBUVA */ \ + OP(L'ේ', RALT(LSHIFT(Key_E))) /* U+0dda, XKB_KEY_Sinh_ee2, SINHALA DIGA KOMBUVA */ \ + OP(L'ෛ', RALT(Key_F)) /* U+0ddb, XKB_KEY_Sinh_ai2, SINHALA KOMBU DEKA */ \ + OP(L'ො', RALT(Key_O)) /* U+0ddc, XKB_KEY_Sinh_o2, SINHALA KOMBUVA HAA AELA-PILLA */ \ + OP(L'ෝ', RALT(LSHIFT(Key_O))) /* U+0ddd, XKB_KEY_Sinh_oo2, SINHALA KOMBUVA HAA DIGA AELA-PILLA */ \ + OP(L'ෞ', RALT(Key_H)) /* U+0dde, XKB_KEY_Sinh_au2, SINHALA KOMBUVA HAA GAYANUKITTA */ \ + OP(L'ෟ', RALT(Key_L)) /* U+0ddf, XKB_KEY_Sinh_lu2, SINHALA GAYANUKITTA */ \ + OP(L'ෲ', RALT(LSHIFT(Key_Q))) /* U+0df2, XKB_KEY_Sinh_ruu2, SINHALA DIGA GAETTA-PILLA */ \ + OP(L'ෳ', RALT(LSHIFT(Key_L))) /* U+0df3, XKB_KEY_Sinh_luu2, SINHALA DIGA GAYANUKITTA */ \ + OP(L'෴', RALT(Key_Period)) /* U+0df4, XKB_KEY_Sinh_kunddaliya, SINHALA KUNDDALIYA */ \ + OP(L'‌', RALT(Key_Spacebar)) \ + OP(L'‍', RALT(Key_Slash)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Sinh_a, Key_A) \ + OP(XKB_KEY_Sinh_aa, LSHIFT(Key_A)) \ + OP(XKB_KEY_Sinh_aa2, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Sinh_ae, Key_W) \ + OP(XKB_KEY_Sinh_ae2, RALT(Key_W)) \ + OP(XKB_KEY_Sinh_aee, LSHIFT(Key_W)) \ + OP(XKB_KEY_Sinh_aee2, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_Sinh_ai, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Sinh_ai2, RALT(Key_F)) \ + OP(XKB_KEY_Sinh_al, LSHIFT(Key_R)) \ + OP(XKB_KEY_Sinh_au, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_Sinh_au2, RALT(Key_H)) \ + OP(XKB_KEY_Sinh_ba, Key_B) \ + OP(XKB_KEY_Sinh_bha, LSHIFT(Key_B)) \ + OP(XKB_KEY_Sinh_ca, Key_C) \ + OP(XKB_KEY_Sinh_cha, LSHIFT(Key_C)) \ + OP(XKB_KEY_Sinh_dda, RALT(Key_D)) \ + OP(XKB_KEY_Sinh_ddha, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Sinh_dha, Key_D) \ + OP(XKB_KEY_Sinh_dhha, LSHIFT(Key_D)) \ + OP(XKB_KEY_Sinh_e, Key_E) \ + OP(XKB_KEY_Sinh_e2, RALT(Key_E)) \ + OP(XKB_KEY_Sinh_ee, LSHIFT(Key_E)) \ + OP(XKB_KEY_Sinh_ee2, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Sinh_fa, Key_F) \ + OP(XKB_KEY_Sinh_ga, Key_G) \ + OP(XKB_KEY_Sinh_gha, LSHIFT(Key_G)) \ + OP(XKB_KEY_Sinh_h2, LSHIFT(Key_H)) \ + OP(XKB_KEY_Sinh_ha, Key_H) \ + OP(XKB_KEY_Sinh_i, Key_I) \ + OP(XKB_KEY_Sinh_i2, RALT(Key_I)) \ + OP(XKB_KEY_Sinh_ii, LSHIFT(Key_I)) \ + OP(XKB_KEY_Sinh_ii2, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Sinh_ja, Key_J) \ + OP(XKB_KEY_Sinh_jha, LSHIFT(Key_J)) \ + OP(XKB_KEY_Sinh_jnya, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Sinh_ka, Key_K) \ + OP(XKB_KEY_Sinh_kha, LSHIFT(Key_K)) \ + OP(XKB_KEY_Sinh_kunddaliya, RALT(Key_Period)) \ + OP(XKB_KEY_Sinh_la, Key_L) \ + OP(XKB_KEY_Sinh_lla, LSHIFT(Key_L)) \ + OP(XKB_KEY_Sinh_lu, RALT(Key_K)) \ + OP(XKB_KEY_Sinh_lu2, RALT(Key_L)) \ + OP(XKB_KEY_Sinh_luu, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Sinh_luu2, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Sinh_ma, Key_M) \ + OP(XKB_KEY_Sinh_mba, LSHIFT(Key_M)) \ + OP(XKB_KEY_Sinh_na, Key_N) \ + OP(XKB_KEY_Sinh_ndda, LSHIFT(Key_X)) \ + OP(XKB_KEY_Sinh_ndha, Key_X) \ + OP(XKB_KEY_Sinh_ng, RALT(Key_N)) \ + OP(XKB_KEY_Sinh_ng2, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Sinh_nga, RALT(Key_G)) \ + OP(XKB_KEY_Sinh_nja, RALT(Key_J)) \ + OP(XKB_KEY_Sinh_nna, LSHIFT(Key_N)) \ + OP(XKB_KEY_Sinh_nya, Key_Z) \ + OP(XKB_KEY_Sinh_o, Key_O) \ + OP(XKB_KEY_Sinh_o2, RALT(Key_O)) \ + OP(XKB_KEY_Sinh_oo, LSHIFT(Key_O)) \ + OP(XKB_KEY_Sinh_oo2, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Sinh_pa, Key_P) \ + OP(XKB_KEY_Sinh_pha, LSHIFT(Key_P)) \ + OP(XKB_KEY_Sinh_ra, Key_R) \ + OP(XKB_KEY_Sinh_ri, Key_Q) \ + OP(XKB_KEY_Sinh_rii, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Sinh_ru2, RALT(Key_Q)) \ + OP(XKB_KEY_Sinh_ruu2, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Sinh_sa, Key_S) \ + OP(XKB_KEY_Sinh_sha, LSHIFT(Key_S)) \ + OP(XKB_KEY_Sinh_ssha, RALT(Key_S)) \ + OP(XKB_KEY_Sinh_tha, Key_T) \ + OP(XKB_KEY_Sinh_thha, LSHIFT(Key_T)) \ + OP(XKB_KEY_Sinh_tta, RALT(Key_T)) \ + OP(XKB_KEY_Sinh_ttha, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Sinh_u, Key_U) \ + OP(XKB_KEY_Sinh_u2, RALT(Key_U)) \ + OP(XKB_KEY_Sinh_uu, LSHIFT(Key_U)) \ + OP(XKB_KEY_Sinh_uu2, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Sinh_va, Key_V) \ + OP(XKB_KEY_Sinh_ya, Key_Y) \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_nobreakspace, LSHIFT(Key_Spacebar)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lk { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace lk +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lk/tam_TAB/keymap.h b/src/kaleidoscope/host_keymap/linux/lk/tam_TAB/keymap.h new file mode 100644 index 0000000000..4bc036f168 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lk/tam_TAB/keymap.h @@ -0,0 +1,265 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lk +// variant: tam_TAB + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', Key_H) \ + OP(L'£', LSHIFT(Key_H)) \ + OP(L'¤', Key_P) \ + OP(L'¦', LSHIFT(Key_P)) \ + OP(L'§', LSHIFT(Key_1)) \ + OP(L'¨', LSHIFT(Key_2)) \ + OP(L'ª', Key_B) \ + OP(L'«', LSHIFT(Key_B)) \ + OP(L'¬', Key_I) \ + OP(L'®', Key_O) \ + OP(L'¯', LSHIFT(Key_O)) \ + OP(L'°', LSHIFT(Key_F)) \ + OP(L'±', LSHIFT(Key_Quote)) \ + OP(L'²', LSHIFT(Key_R)) \ + OP(L'³', LSHIFT(Key_Q)) \ + OP(L'´', LSHIFT(Key_L)) \ + OP(L'µ', LSHIFT(Key_Z)) \ + OP(L'¶', LSHIFT(Key_J)) \ + OP(L'¸', LSHIFT(Key_E)) \ + OP(L'¹', LSHIFT(Key_G)) \ + OP(L'º', LSHIFT(Key_K)) \ + OP(L'»', LSHIFT(Key_A)) \ + OP(L'¼', LSHIFT(Key_U)) \ + OP(L'½', LSHIFT(Key_Y)) \ + OP(L'¾', LSHIFT(Key_T)) \ + OP(L'¿', LSHIFT(Key_Semicolon)) \ + OP(L'À', LSHIFT(Key_S)) \ + OP(L'Á', LSHIFT(Key_W)) \ + OP(L'Â', LSHIFT(Key_D)) \ + OP(L'Ü', Key_M) \ + OP(L'Ý', LSHIFT(Key_M)) \ + OP(L'Þ', Key_Comma) \ + OP(L'ß', LSHIFT(Key_Comma)) \ + OP(L'à', Key_C) \ + OP(L'á', LSHIFT(Key_C)) \ + OP(L'â', Key_V) \ + OP(L'ã', LSHIFT(Key_V)) \ + OP(L'ä', LSHIFT(Key_I)) \ + OP(L'å', Key_X) \ + OP(L'æ', LSHIFT(Key_X)) \ + OP(L'ç', Key_1) \ + OP(L'è', Key_F) \ + OP(L'é', Key_Quote) \ + OP(L'ê', Key_R) \ + OP(L'ë', Key_Q) \ + OP(L'ì', Key_L) \ + OP(L'í', Key_Z) \ + OP(L'î', Key_J) \ + OP(L'ï', Key_E) \ + OP(L'ð', Key_G) \ + OP(L'ñ', Key_K) \ + OP(L'ò', Key_A) \ + OP(L'ó', Key_U) \ + OP(L'ô', Key_Y) \ + OP(L'õ', Key_T) \ + OP(L'ö', Key_Semicolon) \ + OP(L'÷', Key_S) \ + OP(L'ø', Key_W) \ + OP(L'ù', Key_D) \ + OP(L'ú', Key_2) \ + OP(L'û', Key_3) \ + OP(L'ü', Key_4) \ + OP(L'ý', Key_5) \ + OP(L'þ', Key_6) \ + OP(L'ÿ', Key_7) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lk { +namespace tam_TAB { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace tam_TAB +} // namespace lk +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lk/tam_unicode/keymap.h b/src/kaleidoscope/host_keymap/linux/lk/tam_unicode/keymap.h new file mode 100644 index 0000000000..6855306436 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lk/tam_unicode/keymap.h @@ -0,0 +1,297 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lk +// variant: tam_unicode + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'ஃ', LSHIFT(Key_Semicolon)) \ + OP(L'அ', Key_M) \ + OP(L'ஆ', LSHIFT(Key_M)) \ + OP(L'இ', Key_Comma) \ + OP(L'ஈ', LSHIFT(Key_Comma)) \ + OP(L'உ', Key_C) \ + OP(L'ஊ', LSHIFT(Key_C)) \ + OP(L'எ', Key_V) \ + OP(L'ஏ', LSHIFT(Key_V)) \ + OP(L'ஐ', LSHIFT(Key_I)) \ + OP(L'ஒ', Key_X) \ + OP(L'ஓ', LSHIFT(Key_X)) \ + OP(L'ஔ', Key_N) \ + OP(L'க', Key_F) \ + OP(L'ங', Key_Quote) \ + OP(L'ச', Key_R) \ + OP(L'ஜ', LSHIFT(Key_T)) \ + OP(L'ஞ', Key_Q) \ + OP(L'ட', Key_L) \ + OP(L'ண', Key_Z) \ + OP(L'த', Key_J) \ + OP(L'ந', Key_E) \ + OP(L'ன', Key_D) \ + OP(L'ப', Key_G) \ + OP(L'ம', Key_K) \ + OP(L'ய', Key_A) \ + OP(L'ர', Key_U) \ + OP(L'ற', Key_W) \ + OP(L'ல', Key_Y) \ + OP(L'ள', Key_S) \ + OP(L'ழ', LSHIFT(Key_H)) \ + OP(L'வ', Key_T) \ + OP(L'ஶ', LSHIFT(Key_Q)) \ + OP(L'ஷ', LSHIFT(Key_W)) \ + OP(L'ஸ', LSHIFT(Key_E)) \ + OP(L'ஹ', LSHIFT(Key_R)) \ + OP(L'ா', Key_H) \ + OP(L'ி', Key_P) \ + OP(L'ீ', LSHIFT(Key_P)) \ + OP(L'ு', Key_LeftBracket) \ + OP(L'ூ', LSHIFT(Key_LeftBracket)) \ + OP(L'ெ', Key_B) \ + OP(L'ே', LSHIFT(Key_B)) \ + OP(L'ை', Key_I) \ + OP(L'ொ', Key_O) \ + OP(L'ோ', LSHIFT(Key_O)) \ + OP(L'ௌ', LSHIFT(Key_N)) \ + OP(L'்', Key_Semicolon) \ + OP(L'௹', LSHIFT(Key_4)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Backtick) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lk { +namespace tam_unicode { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace tam_unicode +} // namespace lk +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lk/us/keymap.h b/src/kaleidoscope/host_keymap/linux/lk/us/keymap.h new file mode 100644 index 0000000000..59b5d8b341 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lk/us/keymap.h @@ -0,0 +1,414 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lk +// variant: us + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('D', LSHIFT(Key_Q)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_Q) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', LSHIFT(Key_F)) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', LALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'D', LSHIFT(Key_Q)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_Q) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', LSHIFT(Key_F)) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', LALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', LSHIFT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¤', LALT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', LALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', LALT(Key_Comma)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', LALT(Key_5)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'´', LSHIFT(Key_W)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'»', LALT(Key_Period)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', LALT(Key_6)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', LALT(Key_7)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', LALT(Key_8)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'Ð', LSHIFT(Key_D)) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'á', LSHIFT(Key_A)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', LALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', Key_W) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', LSHIFT(Key_J)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', LSHIFT(Key_E)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ë', LALT(Key_E)) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'í', LSHIFT(Key_I)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ï', LALT(Key_I)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ð', Key_D) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', LALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ó', LSHIFT(Key_O)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ô', LALT(Key_L)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', LALT(Key_O)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ú', LSHIFT(Key_U)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'û', LSHIFT(Key_R)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', LALT(Key_U)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', Key_F) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'‌', LALT(Key_Slash)) \ + OP(L'—', LALT(Key_Minus)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_ETH, LSHIFT(Key_D)) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_LeftAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, LSHIFT(Key_A)) \ + OP(XKB_KEY_acute, LSHIFT(Key_W)) \ + OP(XKB_KEY_adiaeresis, LALT(Key_A)) \ + OP(XKB_KEY_ae, Key_W) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, LALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, LSHIFT(Key_J)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_currency, LALT(Key_4)) \ + OP(XKB_KEY_d, Key_Q) \ + OP(XKB_KEY_dead_abovedot, LALT(Key_3)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_belowdot, LALT(Key_2)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_macron, LALT(Key_1)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_degree, LALT(Key_5)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, LSHIFT(Key_E)) \ + OP(XKB_KEY_ediaeresis, LALT(Key_E)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, Key_D) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, LSHIFT(Key_F)) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, LALT(Key_Comma)) \ + OP(XKB_KEY_guillemotright, LALT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, LSHIFT(Key_I)) \ + OP(XKB_KEY_idiaeresis, LALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, LSHIFT(Key_Spacebar)) \ + OP(XKB_KEY_ntilde, LALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, LSHIFT(Key_O)) \ + OP(XKB_KEY_ocircumflex, LALT(Key_L)) \ + OP(XKB_KEY_odiaeresis, LALT(Key_O)) \ + OP(XKB_KEY_onehalf, LALT(Key_7)) \ + OP(XKB_KEY_onequarter, LALT(Key_6)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, LALT(Key_Q)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, Key_F) \ + OP(XKB_KEY_threequarters, LALT(Key_8)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, LSHIFT(Key_U)) \ + OP(XKB_KEY_ucircumflex, LSHIFT(Key_R)) \ + OP(XKB_KEY_udiaeresis, LALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lk { +namespace us { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace us +} // namespace lk +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lt/ibm/keymap.h b/src/kaleidoscope/host_keymap/linux/lt/ibm/keymap.h new file mode 100644 index 0000000000..40c95bc182 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lt/ibm/keymap.h @@ -0,0 +1,592 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lt +// variant: ibm + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_1) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_2) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_9) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_0) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_6) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_7) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_3) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_5) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_4) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', Key_8) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_Minus) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_1) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_2) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_9) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_0) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_6) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_7) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_3) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_5) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_4) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', Key_8) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_Minus) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_Backtick))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'´', RALT(Key_Backtick)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ą', LSHIFT(Key_Q)) /* U+0104, XKB_KEY_Aogonek, LATIN CAPITAL LETTER A WITH OGONEK */ \ + OP(L'ą', Key_Q) /* U+0105, XKB_KEY_aogonek, LATIN SMALL LETTER A WITH OGONEK */ \ + OP(L'Č', LSHIFT(Key_Comma)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Comma) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ė', LSHIFT(Key_Quote)) /* U+0116, XKB_KEY_Eabovedot, LATIN CAPITAL LETTER E WITH DOT ABOVE */ \ + OP(L'ė', Key_Quote) /* U+0117, XKB_KEY_eabovedot, LATIN SMALL LETTER E WITH DOT ABOVE */ \ + OP(L'Ę', LSHIFT(Key_Slash)) /* U+0118, XKB_KEY_Eogonek, LATIN CAPITAL LETTER E WITH OGONEK */ \ + OP(L'ę', Key_Slash) /* U+0119, XKB_KEY_eogonek, LATIN SMALL LETTER E WITH OGONEK */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Į', LSHIFT(Key_LeftBracket)) /* U+012e, XKB_KEY_Iogonek, LATIN CAPITAL LETTER I WITH OGONEK */ \ + OP(L'į', Key_LeftBracket) /* U+012f, XKB_KEY_iogonek, LATIN SMALL LETTER I WITH OGONEK */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Š', LSHIFT(Key_Period)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_Period) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ū', LSHIFT(Key_X)) /* U+016a, XKB_KEY_Umacron, LATIN CAPITAL LETTER U WITH MACRON */ \ + OP(L'ū', Key_X) /* U+016b, XKB_KEY_umacron, LATIN SMALL LETTER U WITH MACRON */ \ + OP(L'Ų', LSHIFT(Key_Semicolon)) /* U+0172, XKB_KEY_Uogonek, LATIN CAPITAL LETTER U WITH OGONEK */ \ + OP(L'ų', Key_Semicolon) /* U+0173, XKB_KEY_uogonek, LATIN SMALL LETTER U WITH OGONEK */ \ + OP(L'Ž', LSHIFT(Key_W)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_W) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', LSHIFT(Key_RightBracket)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', Key_RightBracket) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aogonek, LSHIFT(Key_Q)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eabovedot, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Eogonek, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_Iogonek, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Umacron, LSHIFT(Key_X)) \ + OP(XKB_KEY_Uogonek, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_X, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, RALT(Key_Backtick)) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, RALT(Key_7)) \ + OP(XKB_KEY_aogonek, Key_Q) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, RALT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, Key_Comma) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, Key_5) \ + OP(XKB_KEY_comma, Key_6) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, Key_RightBracket) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eabovedot, Key_Quote) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_eogonek, Key_Slash) \ + OP(XKB_KEY_equal, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, Key_1) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_iogonek, Key_LeftBracket) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, Key_9) \ + OP(XKB_KEY_parenright, Key_0) \ + OP(XKB_KEY_percent, RALT(Key_5)) \ + OP(XKB_KEY_period, Key_7) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, Key_8) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, Key_2) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_Period) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, Key_4) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_3) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_umacron, Key_X) \ + OP(XKB_KEY_underscore, Key_Minus) \ + OP(XKB_KEY_uogonek, Key_Semicolon) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, RALT(Key_W)) \ + OP(XKB_KEY_x, RALT(Key_X)) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lt { +namespace ibm { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ibm +} // namespace lt +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lt/lekp/keymap.h b/src/kaleidoscope/host_keymap/linux/lt/lekp/keymap.h new file mode 100644 index 0000000000..339030710a --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lt/lekp/keymap.h @@ -0,0 +1,501 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lt +// variant: lekp + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_6) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_1)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_G)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_T)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_Equals)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_0) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_4) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_3) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_1) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', RALT(Key_A)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', RALT(Key_X)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', RALT(Key_C)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', RALT(Key_V)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', RALT(Key_S)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', RALT(Key_D)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', RALT(Key_F)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', RALT(Key_W)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', RALT(Key_E)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', RALT(Key_R)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Equals) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_NonUsBackslashAndPipe) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', Key_LeftBracket) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_M)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_T)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_5)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_Slash)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_L)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_U)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_S)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_R)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_G)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_Semicolon)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_H)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_E)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_D)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_7)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Quote)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', LSHIFT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_2) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_Z)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_NonUsPound)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_M) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_T) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_5) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_Slash) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_L) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_U) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_S) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_R) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_G) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_Semicolon) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_H) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_E) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_D) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_7) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Quote) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_3)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_4)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_6) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_1)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_G)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_T)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_Equals)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_0) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_4) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_3) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_1) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', RALT(Key_A)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', RALT(Key_X)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', RALT(Key_C)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', RALT(Key_V)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', RALT(Key_S)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', RALT(Key_D)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', RALT(Key_F)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', RALT(Key_W)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', RALT(Key_E)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', RALT(Key_R)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Equals) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_NonUsBackslashAndPipe) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', Key_LeftBracket) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_M)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_T)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_5)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_Slash)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_L)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_U)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_S)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_R)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_G)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_Semicolon)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_H)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_E)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_D)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_7)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Quote)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', LSHIFT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_2) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_Z)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_NonUsPound)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_M) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_T) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_5) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_Slash) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_L) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_U) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_S) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_R) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_G) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_Semicolon) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_H) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_E) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_D) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_7) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Quote) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_3)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_4)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', RALT(Key_NonUsBackslashAndPipe)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_2)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_Minus)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'®', RALT(Key_0)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_M)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'´', RALT(Key_Backtick)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'×', RALT(Key_Quote)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ą', LSHIFT(Key_Period)) /* U+0104, XKB_KEY_Aogonek, LATIN CAPITAL LETTER A WITH OGONEK */ \ + OP(L'ą', Key_Period) /* U+0105, XKB_KEY_aogonek, LATIN SMALL LETTER A WITH OGONEK */ \ + OP(L'Č', LSHIFT(Key_Y)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Y) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Ė', LSHIFT(Key_O)) /* U+0116, XKB_KEY_Eabovedot, LATIN CAPITAL LETTER E WITH DOT ABOVE */ \ + OP(L'ė', Key_O) /* U+0117, XKB_KEY_eabovedot, LATIN SMALL LETTER E WITH DOT ABOVE */ \ + OP(L'Ę', LSHIFT(Key_P)) /* U+0118, XKB_KEY_Eogonek, LATIN CAPITAL LETTER E WITH OGONEK */ \ + OP(L'ę', Key_P) /* U+0119, XKB_KEY_eogonek, LATIN SMALL LETTER E WITH OGONEK */ \ + OP(L'Į', LSHIFT(Key_9)) /* U+012e, XKB_KEY_Iogonek, LATIN CAPITAL LETTER I WITH OGONEK */ \ + OP(L'į', Key_9) /* U+012f, XKB_KEY_iogonek, LATIN SMALL LETTER I WITH OGONEK */ \ + OP(L'Š', LSHIFT(Key_N)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_N) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ū', LSHIFT(Key_Comma)) /* U+016a, XKB_KEY_Umacron, LATIN CAPITAL LETTER U WITH MACRON */ \ + OP(L'ū', Key_Comma) /* U+016b, XKB_KEY_umacron, LATIN SMALL LETTER U WITH MACRON */ \ + OP(L'Ų', LSHIFT(Key_8)) /* U+0172, XKB_KEY_Uogonek, LATIN CAPITAL LETTER U WITH OGONEK */ \ + OP(L'ų', Key_8) /* U+0173, XKB_KEY_uogonek, LATIN SMALL LETTER U WITH OGONEK */ \ + OP(L'Ž', LSHIFT(Key_B)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_B) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'–', LSHIFT(Key_6)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'“', LSHIFT(Key_Minus)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', LSHIFT(Key_0)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_Q)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(Key_Equals)) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_A)) \ + OP(XKB_KEY_1, RALT(Key_X)) \ + OP(XKB_KEY_2, RALT(Key_C)) \ + OP(XKB_KEY_3, RALT(Key_V)) \ + OP(XKB_KEY_4, RALT(Key_S)) \ + OP(XKB_KEY_5, RALT(Key_D)) \ + OP(XKB_KEY_6, RALT(Key_F)) \ + OP(XKB_KEY_7, RALT(Key_W)) \ + OP(XKB_KEY_8, RALT(Key_E)) \ + OP(XKB_KEY_9, RALT(Key_R)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aogonek, LSHIFT(Key_Period)) \ + OP(XKB_KEY_B, LSHIFT(Key_M)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_T)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_K)) \ + OP(XKB_KEY_Eabovedot, LSHIFT(Key_O)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Eogonek, LSHIFT(Key_P)) \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_Q)) \ + OP(XKB_KEY_F, LSHIFT(Key_5)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_W)) \ + OP(XKB_KEY_H, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_L)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_Iogonek, LSHIFT(Key_9)) \ + OP(XKB_KEY_J, LSHIFT(Key_U)) \ + OP(XKB_KEY_K, LSHIFT(Key_S)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_R)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_G)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_J)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_P, LSHIFT(Key_H)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_E)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_D)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_N)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_F)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_I)) \ + OP(XKB_KEY_Umacron, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Uogonek, LSHIFT(Key_8)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_7)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_B)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, RALT(Key_Backtick)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_aogonek, Key_Period) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_Z)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, RALT(Key_Semicolon)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_M) \ + OP(XKB_KEY_backslash, Key_2) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_3)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_4)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, Key_Y) \ + OP(XKB_KEY_colon, Key_Equals) \ + OP(XKB_KEY_comma, Key_4) \ + OP(XKB_KEY_copyright, RALT(Key_Minus)) \ + OP(XKB_KEY_d, Key_T) \ + OP(XKB_KEY_degree, RALT(Key_M)) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, RALT(Key_G)) \ + OP(XKB_KEY_doublelowquotemark, LSHIFT(Key_0)) \ + OP(XKB_KEY_e, Key_K) \ + OP(XKB_KEY_eabovedot, Key_O) \ + OP(XKB_KEY_endash, LSHIFT(Key_6)) \ + OP(XKB_KEY_eogonek, Key_P) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_exclam, Key_6) \ + OP(XKB_KEY_f, Key_5) \ + OP(XKB_KEY_g, Key_W) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_h, Key_Slash) \ + OP(XKB_KEY_i, Key_L) \ + OP(XKB_KEY_iogonek, Key_9) \ + OP(XKB_KEY_j, Key_U) \ + OP(XKB_KEY_k, Key_S) \ + OP(XKB_KEY_l, Key_R) \ + OP(XKB_KEY_leftdoublequotemark, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_less, RALT(Key_Comma)) \ + OP(XKB_KEY_m, Key_G) \ + OP(XKB_KEY_minus, RALT(Key_O)) \ + OP(XKB_KEY_multiply, RALT(Key_Quote)) \ + OP(XKB_KEY_n, Key_J) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_1)) \ + OP(XKB_KEY_o, Key_Semicolon) \ + OP(XKB_KEY_p, Key_H) \ + OP(XKB_KEY_parenleft, Key_0) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, RALT(Key_T)) \ + OP(XKB_KEY_period, Key_3) \ + OP(XKB_KEY_plus, RALT(Key_L)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, Key_LeftBracket) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_r, Key_E) \ + OP(XKB_KEY_registered, RALT(Key_0)) \ + OP(XKB_KEY_s, Key_D) \ + OP(XKB_KEY_scaron, Key_N) \ + OP(XKB_KEY_section, RALT(Key_2)) \ + OP(XKB_KEY_semicolon, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_slash, Key_1) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_t, Key_F) \ + OP(XKB_KEY_trademark, RALT(Key_Equals)) \ + OP(XKB_KEY_u, Key_I) \ + OP(XKB_KEY_umacron, Key_Comma) \ + OP(XKB_KEY_underscore, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_uogonek, Key_8) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_7) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Quote) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, Key_B) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lt { +namespace lekp { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace lekp +} // namespace lt +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lt/lekpa/keymap.h b/src/kaleidoscope/host_keymap/linux/lt/lekpa/keymap.h new file mode 100644 index 0000000000..01e81fc9c7 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lt/lekpa/keymap.h @@ -0,0 +1,501 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lt +// variant: lekpa + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_6) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_1)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_G)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_T)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_5)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_0) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_4) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_3) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_1) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', RALT(Key_A)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', RALT(Key_X)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', RALT(Key_C)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', RALT(Key_V)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', RALT(Key_S)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', RALT(Key_D)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', RALT(Key_F)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', RALT(Key_W)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', RALT(Key_E)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', RALT(Key_R)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Equals) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Equals)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', Key_LeftBracket) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_M)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_T)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_5)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_Slash)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_L)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_U)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_S)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_R)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_G)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_Semicolon)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_H)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_E)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_D)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_7)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Quote)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', LSHIFT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_2) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_Z)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_NonUsPound)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_M) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_T) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_5) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_Slash) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_L) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_U) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_S) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_R) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_G) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_Semicolon) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_H) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_E) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_D) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_7) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Quote) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_3)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_4)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_6) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_1)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_G)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_T)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_5)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_0) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_4) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_3) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_1) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', RALT(Key_A)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', RALT(Key_X)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', RALT(Key_C)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', RALT(Key_V)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', RALT(Key_S)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', RALT(Key_D)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', RALT(Key_F)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', RALT(Key_W)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', RALT(Key_E)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', RALT(Key_R)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Equals) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Equals)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', Key_LeftBracket) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_M)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_T)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_5)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_Slash)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_L)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_U)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_S)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_R)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_G)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_Semicolon)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_H)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_E)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_D)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_7)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Quote)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', LSHIFT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_2) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_Z)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_NonUsPound)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_M) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_T) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_5) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_Slash) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_L) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_U) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_S) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_R) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_G) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_Semicolon) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_H) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_E) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_D) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_7) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Quote) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_3)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_4)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', RALT(Key_4)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_2)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_Minus)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'®', RALT(Key_0)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_M)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'´', RALT(Key_Backtick)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'×', RALT(Key_Quote)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ą', LSHIFT(Key_Period)) /* U+0104, XKB_KEY_Aogonek, LATIN CAPITAL LETTER A WITH OGONEK */ \ + OP(L'ą', Key_Period) /* U+0105, XKB_KEY_aogonek, LATIN SMALL LETTER A WITH OGONEK */ \ + OP(L'Č', LSHIFT(Key_Y)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Y) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Ė', LSHIFT(Key_O)) /* U+0116, XKB_KEY_Eabovedot, LATIN CAPITAL LETTER E WITH DOT ABOVE */ \ + OP(L'ė', Key_O) /* U+0117, XKB_KEY_eabovedot, LATIN SMALL LETTER E WITH DOT ABOVE */ \ + OP(L'Ę', LSHIFT(Key_P)) /* U+0118, XKB_KEY_Eogonek, LATIN CAPITAL LETTER E WITH OGONEK */ \ + OP(L'ę', Key_P) /* U+0119, XKB_KEY_eogonek, LATIN SMALL LETTER E WITH OGONEK */ \ + OP(L'Į', LSHIFT(Key_9)) /* U+012e, XKB_KEY_Iogonek, LATIN CAPITAL LETTER I WITH OGONEK */ \ + OP(L'į', Key_9) /* U+012f, XKB_KEY_iogonek, LATIN SMALL LETTER I WITH OGONEK */ \ + OP(L'Š', LSHIFT(Key_N)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_N) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ū', LSHIFT(Key_Comma)) /* U+016a, XKB_KEY_Umacron, LATIN CAPITAL LETTER U WITH MACRON */ \ + OP(L'ū', Key_Comma) /* U+016b, XKB_KEY_umacron, LATIN SMALL LETTER U WITH MACRON */ \ + OP(L'Ų', LSHIFT(Key_8)) /* U+0172, XKB_KEY_Uogonek, LATIN CAPITAL LETTER U WITH OGONEK */ \ + OP(L'ų', Key_8) /* U+0173, XKB_KEY_uogonek, LATIN SMALL LETTER U WITH OGONEK */ \ + OP(L'Ž', LSHIFT(Key_B)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_B) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'–', LSHIFT(Key_6)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'“', LSHIFT(Key_Minus)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', LSHIFT(Key_0)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_Q)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(Key_Equals)) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_A)) \ + OP(XKB_KEY_1, RALT(Key_X)) \ + OP(XKB_KEY_2, RALT(Key_C)) \ + OP(XKB_KEY_3, RALT(Key_V)) \ + OP(XKB_KEY_4, RALT(Key_S)) \ + OP(XKB_KEY_5, RALT(Key_D)) \ + OP(XKB_KEY_6, RALT(Key_F)) \ + OP(XKB_KEY_7, RALT(Key_W)) \ + OP(XKB_KEY_8, RALT(Key_E)) \ + OP(XKB_KEY_9, RALT(Key_R)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aogonek, LSHIFT(Key_Period)) \ + OP(XKB_KEY_B, LSHIFT(Key_M)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_T)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_K)) \ + OP(XKB_KEY_Eabovedot, LSHIFT(Key_O)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Eogonek, LSHIFT(Key_P)) \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_Q)) \ + OP(XKB_KEY_F, LSHIFT(Key_5)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_W)) \ + OP(XKB_KEY_H, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_L)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_Iogonek, LSHIFT(Key_9)) \ + OP(XKB_KEY_J, LSHIFT(Key_U)) \ + OP(XKB_KEY_K, LSHIFT(Key_S)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_R)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_G)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_J)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_P, LSHIFT(Key_H)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_E)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_D)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_N)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_F)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_I)) \ + OP(XKB_KEY_Umacron, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Uogonek, LSHIFT(Key_8)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_7)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_B)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, RALT(Key_Backtick)) \ + OP(XKB_KEY_ampersand, RALT(Key_5)) \ + OP(XKB_KEY_aogonek, Key_Period) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_Z)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, RALT(Key_Semicolon)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_M) \ + OP(XKB_KEY_backslash, Key_2) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_3)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_4)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, Key_Y) \ + OP(XKB_KEY_colon, Key_Equals) \ + OP(XKB_KEY_comma, Key_4) \ + OP(XKB_KEY_copyright, RALT(Key_Minus)) \ + OP(XKB_KEY_d, Key_T) \ + OP(XKB_KEY_degree, RALT(Key_M)) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, RALT(Key_G)) \ + OP(XKB_KEY_doublelowquotemark, LSHIFT(Key_0)) \ + OP(XKB_KEY_e, Key_K) \ + OP(XKB_KEY_eabovedot, Key_O) \ + OP(XKB_KEY_endash, LSHIFT(Key_6)) \ + OP(XKB_KEY_eogonek, Key_P) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_exclam, Key_6) \ + OP(XKB_KEY_f, Key_5) \ + OP(XKB_KEY_g, Key_W) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_h, Key_Slash) \ + OP(XKB_KEY_i, Key_L) \ + OP(XKB_KEY_iogonek, Key_9) \ + OP(XKB_KEY_j, Key_U) \ + OP(XKB_KEY_k, Key_S) \ + OP(XKB_KEY_l, Key_R) \ + OP(XKB_KEY_leftdoublequotemark, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_G) \ + OP(XKB_KEY_minus, RALT(Key_O)) \ + OP(XKB_KEY_multiply, RALT(Key_Quote)) \ + OP(XKB_KEY_n, Key_J) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_Semicolon) \ + OP(XKB_KEY_p, Key_H) \ + OP(XKB_KEY_parenleft, Key_0) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, RALT(Key_T)) \ + OP(XKB_KEY_period, Key_3) \ + OP(XKB_KEY_plus, RALT(Key_L)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, Key_LeftBracket) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_1)) \ + OP(XKB_KEY_r, Key_E) \ + OP(XKB_KEY_registered, RALT(Key_0)) \ + OP(XKB_KEY_s, Key_D) \ + OP(XKB_KEY_scaron, Key_N) \ + OP(XKB_KEY_section, RALT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_slash, Key_1) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_4)) \ + OP(XKB_KEY_t, Key_F) \ + OP(XKB_KEY_trademark, RALT(Key_Equals)) \ + OP(XKB_KEY_u, Key_I) \ + OP(XKB_KEY_umacron, Key_Comma) \ + OP(XKB_KEY_underscore, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_uogonek, Key_8) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_7) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Quote) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, Key_B) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lt { +namespace lekpa { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace lekpa +} // namespace lt +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lt/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/lt/standard/keymap.h new file mode 100644 index 0000000000..fc5e312421 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lt/standard/keymap.h @@ -0,0 +1,590 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lt +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', RALT(LSHIFT(Key_1))) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(LSHIFT(Key_3))) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(LSHIFT(Key_4))) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(LSHIFT(Key_5))) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(LSHIFT(Key_7))) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', RALT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_6))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', RALT(LSHIFT(Key_1))) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(LSHIFT(Key_3))) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(LSHIFT(Key_4))) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(LSHIFT(Key_5))) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(LSHIFT(Key_7))) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', RALT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_6))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_Backtick))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'´', RALT(Key_Backtick)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ą', LSHIFT(Key_1)) /* U+0104, XKB_KEY_Aogonek, LATIN CAPITAL LETTER A WITH OGONEK */ \ + OP(L'ą', Key_1) /* U+0105, XKB_KEY_aogonek, LATIN SMALL LETTER A WITH OGONEK */ \ + OP(L'Č', LSHIFT(Key_2)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_2) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ė', LSHIFT(Key_4)) /* U+0116, XKB_KEY_Eabovedot, LATIN CAPITAL LETTER E WITH DOT ABOVE */ \ + OP(L'ė', Key_4) /* U+0117, XKB_KEY_eabovedot, LATIN SMALL LETTER E WITH DOT ABOVE */ \ + OP(L'Ę', LSHIFT(Key_3)) /* U+0118, XKB_KEY_Eogonek, LATIN CAPITAL LETTER E WITH OGONEK */ \ + OP(L'ę', Key_3) /* U+0119, XKB_KEY_eogonek, LATIN SMALL LETTER E WITH OGONEK */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Į', LSHIFT(Key_5)) /* U+012e, XKB_KEY_Iogonek, LATIN CAPITAL LETTER I WITH OGONEK */ \ + OP(L'į', Key_5) /* U+012f, XKB_KEY_iogonek, LATIN SMALL LETTER I WITH OGONEK */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Š', LSHIFT(Key_6)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_6) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ū', LSHIFT(Key_8)) /* U+016a, XKB_KEY_Umacron, LATIN CAPITAL LETTER U WITH MACRON */ \ + OP(L'ū', Key_8) /* U+016b, XKB_KEY_umacron, LATIN SMALL LETTER U WITH MACRON */ \ + OP(L'Ų', LSHIFT(Key_7)) /* U+0172, XKB_KEY_Uogonek, LATIN CAPITAL LETTER U WITH OGONEK */ \ + OP(L'ų', Key_7) /* U+0173, XKB_KEY_uogonek, LATIN SMALL LETTER U WITH OGONEK */ \ + OP(L'Ž', LSHIFT(Key_Equals)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_Equals) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', Key_NonUsBackslashAndPipe) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', Key_0) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', Key_9) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_0)) \ + OP(XKB_KEY_1, RALT(Key_1)) \ + OP(XKB_KEY_2, RALT(Key_2)) \ + OP(XKB_KEY_3, RALT(Key_3)) \ + OP(XKB_KEY_4, RALT(Key_4)) \ + OP(XKB_KEY_5, RALT(Key_5)) \ + OP(XKB_KEY_6, RALT(Key_6)) \ + OP(XKB_KEY_7, RALT(Key_7)) \ + OP(XKB_KEY_8, RALT(Key_8)) \ + OP(XKB_KEY_9, RALT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aogonek, LSHIFT(Key_1)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_2)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eabovedot, LSHIFT(Key_4)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Eogonek, LSHIFT(Key_3)) \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_Iogonek, LSHIFT(Key_5)) \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_6)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Umacron, LSHIFT(Key_8)) \ + OP(XKB_KEY_Uogonek, LSHIFT(Key_7)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, RALT(Key_Backtick)) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_aogonek, Key_1) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, Key_2) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_doublelowquotemark, Key_9) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eabovedot, Key_4) \ + OP(XKB_KEY_endash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_eogonek, Key_3) \ + OP(XKB_KEY_equal, RALT(Key_Equals)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_iogonek, Key_5) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, Key_0) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_numbersign, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_6) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_umacron, Key_8) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_uogonek, Key_7) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, Key_Equals) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lt { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace lt +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lt/std/keymap.h b/src/kaleidoscope/host_keymap/linux/lt/std/keymap.h new file mode 100644 index 0000000000..1b81de5a97 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lt/std/keymap.h @@ -0,0 +1,596 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lt +// variant: std + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_1) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_Equals)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Minus)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_9) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_0) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_6) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_2) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_7) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_3) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_5) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_4) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_8) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_X)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', Key_Minus) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_1)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Period)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_NonUsPound)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_RightBracket)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_Equals)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_9)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Slash)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_0)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', RALT(Key_2)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Period) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_NonUsPound) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_RightBracket) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_Equals) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_1) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_Equals)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Minus)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_9) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_0) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_6) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_2) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_7) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_3) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_5) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_4) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_8) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_X)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', Key_Minus) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_1)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Period)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_NonUsPound)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_RightBracket)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_Equals)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_9)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Slash)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_0)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', RALT(Key_2)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Period) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_NonUsPound) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_RightBracket) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_Equals) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_5)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'¬', RALT(LSHIFT(Key_Backtick))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'´', RALT(Key_Backtick)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ą', LSHIFT(Key_Q)) /* U+0104, XKB_KEY_Aogonek, LATIN CAPITAL LETTER A WITH OGONEK */ \ + OP(L'ą', Key_Q) /* U+0105, XKB_KEY_aogonek, LATIN SMALL LETTER A WITH OGONEK */ \ + OP(L'Č', LSHIFT(Key_Comma)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Comma) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ė', LSHIFT(Key_Quote)) /* U+0116, XKB_KEY_Eabovedot, LATIN CAPITAL LETTER E WITH DOT ABOVE */ \ + OP(L'ė', Key_Quote) /* U+0117, XKB_KEY_eabovedot, LATIN SMALL LETTER E WITH DOT ABOVE */ \ + OP(L'Ę', LSHIFT(Key_Slash)) /* U+0118, XKB_KEY_Eogonek, LATIN CAPITAL LETTER E WITH OGONEK */ \ + OP(L'ę', Key_Slash) /* U+0119, XKB_KEY_eogonek, LATIN SMALL LETTER E WITH OGONEK */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Į', LSHIFT(Key_LeftBracket)) /* U+012e, XKB_KEY_Iogonek, LATIN CAPITAL LETTER I WITH OGONEK */ \ + OP(L'į', Key_LeftBracket) /* U+012f, XKB_KEY_iogonek, LATIN SMALL LETTER I WITH OGONEK */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Š', LSHIFT(Key_F)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_F) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ū', LSHIFT(Key_X)) /* U+016a, XKB_KEY_Umacron, LATIN CAPITAL LETTER U WITH MACRON */ \ + OP(L'ū', Key_X) /* U+016b, XKB_KEY_umacron, LATIN SMALL LETTER U WITH MACRON */ \ + OP(L'Ų', LSHIFT(Key_Semicolon)) /* U+0172, XKB_KEY_Uogonek, LATIN CAPITAL LETTER U WITH OGONEK */ \ + OP(L'ų', Key_Semicolon) /* U+0173, XKB_KEY_uogonek, LATIN SMALL LETTER U WITH OGONEK */ \ + OP(L'Ž', LSHIFT(Key_W)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_W) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(Key_C)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_Comma)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aogonek, LSHIFT(Key_Q)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eabovedot, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Eogonek, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_Period)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_Iogonek, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_F)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Umacron, LSHIFT(Key_X)) \ + OP(XKB_KEY_Uogonek, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_X, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, RALT(Key_Backtick)) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, RALT(Key_7)) \ + OP(XKB_KEY_aogonek, Key_Q) \ + OP(XKB_KEY_apostrophe, RALT(Key_Minus)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, RALT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_1)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Slash)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, RALT(Key_9)) \ + OP(XKB_KEY_bracketright, RALT(Key_0)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, Key_Comma) \ + OP(XKB_KEY_colon, Key_5) \ + OP(XKB_KEY_comma, Key_6) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_Comma)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eabovedot, Key_Quote) \ + OP(XKB_KEY_endash, RALT(Key_C)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_eogonek, Key_Slash) \ + OP(XKB_KEY_equal, Key_8) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, Key_1) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_Period) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_iogonek, Key_LeftBracket) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_2) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, Key_9) \ + OP(XKB_KEY_parenright, Key_0) \ + OP(XKB_KEY_percent, RALT(Key_Equals)) \ + OP(XKB_KEY_period, Key_7) \ + OP(XKB_KEY_plus, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_NonUsPound) \ + OP(XKB_KEY_question, Key_Minus) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, RALT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_F) \ + OP(XKB_KEY_section, RALT(Key_5)) \ + OP(XKB_KEY_semicolon, Key_4) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_3) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_umacron, Key_X) \ + OP(XKB_KEY_underscore, RALT(Key_2)) \ + OP(XKB_KEY_uogonek, Key_Semicolon) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_RightBracket) \ + OP(XKB_KEY_x, Key_Equals) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lt { +namespace std { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace std +} // namespace lt +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lt/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/lt/sun_type6/keymap.h new file mode 100644 index 0000000000..6bb0a0836f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lt/sun_type6/keymap.h @@ -0,0 +1,582 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lt +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', RALT(LSHIFT(Key_1))) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(LSHIFT(Key_3))) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(LSHIFT(Key_4))) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(LSHIFT(Key_5))) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_Comma)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', RALT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_6))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', RALT(LSHIFT(Key_1))) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(LSHIFT(Key_3))) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(LSHIFT(Key_4))) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(LSHIFT(Key_5))) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_Comma)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', RALT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_6))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_Backtick))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ą', LSHIFT(Key_1)) /* U+0104, XKB_KEY_Aogonek, LATIN CAPITAL LETTER A WITH OGONEK */ \ + OP(L'ą', Key_1) /* U+0105, XKB_KEY_aogonek, LATIN SMALL LETTER A WITH OGONEK */ \ + OP(L'Č', LSHIFT(Key_2)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_2) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ė', LSHIFT(Key_4)) /* U+0116, XKB_KEY_Eabovedot, LATIN CAPITAL LETTER E WITH DOT ABOVE */ \ + OP(L'ė', Key_4) /* U+0117, XKB_KEY_eabovedot, LATIN SMALL LETTER E WITH DOT ABOVE */ \ + OP(L'Ę', LSHIFT(Key_3)) /* U+0118, XKB_KEY_Eogonek, LATIN CAPITAL LETTER E WITH OGONEK */ \ + OP(L'ę', Key_3) /* U+0119, XKB_KEY_eogonek, LATIN SMALL LETTER E WITH OGONEK */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Į', LSHIFT(Key_5)) /* U+012e, XKB_KEY_Iogonek, LATIN CAPITAL LETTER I WITH OGONEK */ \ + OP(L'į', Key_5) /* U+012f, XKB_KEY_iogonek, LATIN SMALL LETTER I WITH OGONEK */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Š', LSHIFT(Key_6)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_6) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ū', LSHIFT(Key_8)) /* U+016a, XKB_KEY_Umacron, LATIN CAPITAL LETTER U WITH MACRON */ \ + OP(L'ū', Key_8) /* U+016b, XKB_KEY_umacron, LATIN SMALL LETTER U WITH MACRON */ \ + OP(L'Ų', LSHIFT(Key_7)) /* U+0172, XKB_KEY_Uogonek, LATIN CAPITAL LETTER U WITH OGONEK */ \ + OP(L'ų', Key_7) /* U+0173, XKB_KEY_uogonek, LATIN SMALL LETTER U WITH OGONEK */ \ + OP(L'Ž', LSHIFT(Key_Equals)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_Equals) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', Key_0) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', Key_9) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_0)) \ + OP(XKB_KEY_1, RALT(Key_1)) \ + OP(XKB_KEY_2, RALT(Key_2)) \ + OP(XKB_KEY_3, RALT(Key_3)) \ + OP(XKB_KEY_4, RALT(Key_4)) \ + OP(XKB_KEY_5, RALT(Key_5)) \ + OP(XKB_KEY_6, RALT(Key_6)) \ + OP(XKB_KEY_7, RALT(Key_7)) \ + OP(XKB_KEY_8, RALT(Key_8)) \ + OP(XKB_KEY_9, RALT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aogonek, LSHIFT(Key_1)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_2)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eabovedot, LSHIFT(Key_4)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Eogonek, LSHIFT(Key_3)) \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_Iogonek, LSHIFT(Key_5)) \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_6)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Umacron, LSHIFT(Key_8)) \ + OP(XKB_KEY_Uogonek, LSHIFT(Key_7)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, RALT(Key_Comma)) \ + OP(XKB_KEY_aogonek, Key_1) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, Key_2) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_doublelowquotemark, Key_9) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eabovedot, Key_4) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_eogonek, Key_3) \ + OP(XKB_KEY_equal, RALT(Key_Equals)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_iogonek, Key_5) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, Key_0) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_6) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_umacron, Key_8) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_uogonek, Key_7) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, Key_Equals) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lt { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace lt +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lt/us/keymap.h b/src/kaleidoscope/host_keymap/linux/lt/us/keymap.h new file mode 100644 index 0000000000..481e86ff64 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lt/us/keymap.h @@ -0,0 +1,590 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lt +// variant: us + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_Backtick))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'´', RALT(Key_Backtick)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ą', RALT(LSHIFT(Key_1))) /* U+0104, XKB_KEY_Aogonek, LATIN CAPITAL LETTER A WITH OGONEK */ \ + OP(L'ą', RALT(Key_1)) /* U+0105, XKB_KEY_aogonek, LATIN SMALL LETTER A WITH OGONEK */ \ + OP(L'Č', RALT(LSHIFT(Key_2))) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', RALT(Key_2)) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ė', RALT(LSHIFT(Key_4))) /* U+0116, XKB_KEY_Eabovedot, LATIN CAPITAL LETTER E WITH DOT ABOVE */ \ + OP(L'ė', RALT(Key_4)) /* U+0117, XKB_KEY_eabovedot, LATIN SMALL LETTER E WITH DOT ABOVE */ \ + OP(L'Ę', RALT(LSHIFT(Key_3))) /* U+0118, XKB_KEY_Eogonek, LATIN CAPITAL LETTER E WITH OGONEK */ \ + OP(L'ę', RALT(Key_3)) /* U+0119, XKB_KEY_eogonek, LATIN SMALL LETTER E WITH OGONEK */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Į', RALT(LSHIFT(Key_5))) /* U+012e, XKB_KEY_Iogonek, LATIN CAPITAL LETTER I WITH OGONEK */ \ + OP(L'į', RALT(Key_5)) /* U+012f, XKB_KEY_iogonek, LATIN SMALL LETTER I WITH OGONEK */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Š', RALT(LSHIFT(Key_6))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_6)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ū', RALT(LSHIFT(Key_8))) /* U+016a, XKB_KEY_Umacron, LATIN CAPITAL LETTER U WITH MACRON */ \ + OP(L'ū', RALT(Key_8)) /* U+016b, XKB_KEY_umacron, LATIN SMALL LETTER U WITH MACRON */ \ + OP(L'Ų', RALT(LSHIFT(Key_7))) /* U+0172, XKB_KEY_Uogonek, LATIN CAPITAL LETTER U WITH OGONEK */ \ + OP(L'ų', RALT(Key_7)) /* U+0173, XKB_KEY_uogonek, LATIN SMALL LETTER U WITH OGONEK */ \ + OP(L'Ž', RALT(LSHIFT(Key_Equals))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_Equals)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', Key_NonUsBackslashAndPipe) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_0)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_9)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aogonek, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eabovedot, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Eogonek, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_Iogonek, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Umacron, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_Uogonek, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, RALT(Key_Backtick)) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_aogonek, RALT(Key_1)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, RALT(Key_2)) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_9)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eabovedot, RALT(Key_4)) \ + OP(XKB_KEY_endash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_eogonek, RALT(Key_3)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_iogonek, RALT(Key_5)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_0)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, RALT(Key_6)) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_umacron, RALT(Key_8)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_uogonek, RALT(Key_7)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, RALT(Key_Equals)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lt { +namespace us { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace us +} // namespace lt +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lt/us_dvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/lt/us_dvorak/keymap.h new file mode 100644 index 0000000000..6c831fb105 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lt/us_dvorak/keymap.h @@ -0,0 +1,491 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lt +// variant: us_dvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'·', RALT(LSHIFT(Key_E))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'Ą', RALT(LSHIFT(Key_1))) /* U+0104, XKB_KEY_Aogonek, LATIN CAPITAL LETTER A WITH OGONEK */ \ + OP(L'ą', RALT(Key_1)) /* U+0105, XKB_KEY_aogonek, LATIN SMALL LETTER A WITH OGONEK */ \ + OP(L'Č', RALT(LSHIFT(Key_2))) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', RALT(Key_2)) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Ė', RALT(LSHIFT(Key_4))) /* U+0116, XKB_KEY_Eabovedot, LATIN CAPITAL LETTER E WITH DOT ABOVE */ \ + OP(L'ė', RALT(Key_4)) /* U+0117, XKB_KEY_eabovedot, LATIN SMALL LETTER E WITH DOT ABOVE */ \ + OP(L'Ę', RALT(LSHIFT(Key_3))) /* U+0118, XKB_KEY_Eogonek, LATIN CAPITAL LETTER E WITH OGONEK */ \ + OP(L'ę', RALT(Key_3)) /* U+0119, XKB_KEY_eogonek, LATIN SMALL LETTER E WITH OGONEK */ \ + OP(L'Į', RALT(LSHIFT(Key_5))) /* U+012e, XKB_KEY_Iogonek, LATIN CAPITAL LETTER I WITH OGONEK */ \ + OP(L'į', RALT(Key_5)) /* U+012f, XKB_KEY_iogonek, LATIN SMALL LETTER I WITH OGONEK */ \ + OP(L'Š', RALT(LSHIFT(Key_6))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_6)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ū', RALT(LSHIFT(Key_8))) /* U+016a, XKB_KEY_Umacron, LATIN CAPITAL LETTER U WITH MACRON */ \ + OP(L'ū', RALT(Key_8)) /* U+016b, XKB_KEY_umacron, LATIN SMALL LETTER U WITH MACRON */ \ + OP(L'Ų', RALT(LSHIFT(Key_7))) /* U+0172, XKB_KEY_Uogonek, LATIN CAPITAL LETTER U WITH OGONEK */ \ + OP(L'ų', RALT(Key_7)) /* U+0173, XKB_KEY_uogonek, LATIN SMALL LETTER U WITH OGONEK */ \ + OP(L'Ž', RALT(LSHIFT(Key_RightBracket))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_RightBracket)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'“', RALT(Key_0)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_9)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aogonek, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_Eabovedot, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Eogonek, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_Iogonek, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Umacron, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_Uogonek, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_aogonek, RALT(Key_1)) \ + OP(XKB_KEY_apostrophe, Key_Q) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, Key_Minus) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_ccaron, RALT(Key_2)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Z)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_E)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Q)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_W))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_W)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Q))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Z))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_Backtick)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_Z)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_9)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_eabovedot, RALT(Key_4)) \ + OP(XKB_KEY_eogonek, RALT(Key_3)) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_iogonek, RALT(Key_5)) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_0)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_plus, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Q)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_scaron, RALT(Key_6)) \ + OP(XKB_KEY_semicolon, Key_Z) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_umacron, RALT(Key_8)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_uogonek, RALT(Key_7)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_z, Key_Slash) \ + OP(XKB_KEY_zcaron, RALT(Key_RightBracket)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lt { +namespace us_dvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace us_dvorak +} // namespace lt +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lv/adapted/keymap.h b/src/kaleidoscope/host_keymap/linux/lv/adapted/keymap.h new file mode 100644 index 0000000000..575b3971e5 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lv/adapted/keymap.h @@ -0,0 +1,534 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lv +// variant: adapted + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', RALT(LSHIFT(Key_Semicolon))) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', RALT(LSHIFT(Key_Slash))) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', RALT(LSHIFT(Key_Y))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', RALT(Key_Y)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', RALT(LSHIFT(Key_Semicolon))) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', RALT(LSHIFT(Key_Slash))) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', RALT(LSHIFT(Key_Y))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', RALT(Key_Y)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Backtick)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'½', RALT(LSHIFT(Key_5))) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ā', LSHIFT(Key_Y)) /* U+0100, XKB_KEY_Amacron, LATIN CAPITAL LETTER A WITH MACRON */ \ + OP(L'ā', Key_Y) /* U+0101, XKB_KEY_amacron, LATIN SMALL LETTER A WITH MACRON */ \ + OP(L'Č', LSHIFT(Key_2)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', LSHIFT(Key_3)) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Ē', LSHIFT(Key_W)) /* U+0112, XKB_KEY_Emacron, LATIN CAPITAL LETTER E WITH MACRON */ \ + OP(L'ē', Key_W) /* U+0113, XKB_KEY_emacron, LATIN SMALL LETTER E WITH MACRON */ \ + OP(L'Ģ', LSHIFT(Key_Period)) /* U+0122, XKB_KEY_Gcedilla, LATIN CAPITAL LETTER G WITH CEDILLA */ \ + OP(L'ģ', LSHIFT(Key_Comma)) /* U+0123, XKB_KEY_gcedilla, LATIN SMALL LETTER G WITH CEDILLA */ \ + OP(L'Ī', LSHIFT(Key_Semicolon)) /* U+012a, XKB_KEY_Imacron, LATIN CAPITAL LETTER I WITH MACRON */ \ + OP(L'ī', Key_Semicolon) /* U+012b, XKB_KEY_imacron, LATIN SMALL LETTER I WITH MACRON */ \ + OP(L'Ķ', LSHIFT(Key_X)) /* U+0136, XKB_KEY_Kcedilla, LATIN CAPITAL LETTER K WITH CEDILLA */ \ + OP(L'ķ', Key_X) /* U+0137, XKB_KEY_kcedilla, LATIN SMALL LETTER K WITH CEDILLA */ \ + OP(L'Ļ', LSHIFT(Key_Slash)) /* U+013b, XKB_KEY_Lcedilla, LATIN CAPITAL LETTER L WITH CEDILLA */ \ + OP(L'ļ', Key_Slash) /* U+013c, XKB_KEY_lcedilla, LATIN SMALL LETTER L WITH CEDILLA */ \ + OP(L'Ņ', LSHIFT(Key_RightBracket)) /* U+0145, XKB_KEY_Ncedilla, LATIN CAPITAL LETTER N WITH CEDILLA */ \ + OP(L'ņ', Key_RightBracket) /* U+0146, XKB_KEY_ncedilla, LATIN SMALL LETTER N WITH CEDILLA */ \ + OP(L'Ō', RALT(LSHIFT(Key_O))) /* U+014c, XKB_KEY_Omacron, LATIN CAPITAL LETTER O WITH MACRON */ \ + OP(L'ō', RALT(Key_O)) /* U+014d, XKB_KEY_omacron, LATIN SMALL LETTER O WITH MACRON */ \ + OP(L'Ŗ', RALT(LSHIFT(Key_R))) /* U+0156, XKB_KEY_Rcedilla, LATIN CAPITAL LETTER R WITH CEDILLA */ \ + OP(L'ŗ', RALT(Key_R)) /* U+0157, XKB_KEY_rcedilla, LATIN SMALL LETTER R WITH CEDILLA */ \ + OP(L'Š', LSHIFT(Key_Q)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_Q) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ū', LSHIFT(Key_LeftBracket)) /* U+016a, XKB_KEY_Umacron, LATIN CAPITAL LETTER U WITH MACRON */ \ + OP(L'ū', Key_LeftBracket) /* U+016b, XKB_KEY_umacron, LATIN SMALL LETTER U WITH MACRON */ \ + OP(L'Ž', LSHIFT(Key_4)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', LSHIFT(Key_5)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_NonUsPound))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'–', RALT(Key_Equals)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Equals))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', RALT(Key_Quote)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_Quote))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(LSHIFT(Key_4))) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Amacron, LSHIFT(Key_Y)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_2)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Emacron, LSHIFT(Key_W)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gcedilla, LSHIFT(Key_Period)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Imacron, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Kcedilla, LSHIFT(Key_X)) \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Lcedilla, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Ncedilla, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Omacron, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Rcedilla, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Umacron, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_X, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_4)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, RALT(Key_Backtick)) \ + OP(XKB_KEY_amacron, Key_Y) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, LSHIFT(Key_3)) \ + OP(XKB_KEY_colon, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emacron, Key_W) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_endash, RALT(Key_Equals)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gcedilla, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_imacron, Key_Semicolon) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kcedilla, Key_X) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_lcedilla, Key_Slash) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_Quote)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_ncedilla, Key_RightBracket) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_omacron, RALT(Key_O)) \ + OP(XKB_KEY_onehalf, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, RALT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rcedilla, RALT(Key_R)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_Q) \ + OP(XKB_KEY_semicolon, RALT(Key_Semicolon)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, RALT(Key_Slash)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_umacron, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, RALT(Key_W)) \ + OP(XKB_KEY_x, RALT(Key_X)) \ + OP(XKB_KEY_y, RALT(Key_Y)) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, LSHIFT(Key_5)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lv { +namespace adapted { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace adapted +} // namespace lv +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lv/apostrophe/keymap.h b/src/kaleidoscope/host_keymap/linux/lv/apostrophe/keymap.h new file mode 100644 index 0000000000..0ee814feaa --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lv/apostrophe/keymap.h @@ -0,0 +1,553 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lv +// variant: apostrophe + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_LeftBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Backtick)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ā', RALT(LSHIFT(Key_A))) /* U+0100, XKB_KEY_Amacron, LATIN CAPITAL LETTER A WITH MACRON */ \ + OP(L'ā', RALT(Key_A)) /* U+0101, XKB_KEY_amacron, LATIN SMALL LETTER A WITH MACRON */ \ + OP(L'Č', RALT(LSHIFT(Key_C))) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', RALT(Key_C)) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Ē', RALT(LSHIFT(Key_E))) /* U+0112, XKB_KEY_Emacron, LATIN CAPITAL LETTER E WITH MACRON */ \ + OP(L'ē', RALT(Key_E)) /* U+0113, XKB_KEY_emacron, LATIN SMALL LETTER E WITH MACRON */ \ + OP(L'Ģ', RALT(LSHIFT(Key_G))) /* U+0122, XKB_KEY_Gcedilla, LATIN CAPITAL LETTER G WITH CEDILLA */ \ + OP(L'ģ', RALT(Key_G)) /* U+0123, XKB_KEY_gcedilla, LATIN SMALL LETTER G WITH CEDILLA */ \ + OP(L'Ī', RALT(LSHIFT(Key_I))) /* U+012a, XKB_KEY_Imacron, LATIN CAPITAL LETTER I WITH MACRON */ \ + OP(L'ī', RALT(Key_I)) /* U+012b, XKB_KEY_imacron, LATIN SMALL LETTER I WITH MACRON */ \ + OP(L'Ķ', RALT(LSHIFT(Key_K))) /* U+0136, XKB_KEY_Kcedilla, LATIN CAPITAL LETTER K WITH CEDILLA */ \ + OP(L'ķ', RALT(Key_K)) /* U+0137, XKB_KEY_kcedilla, LATIN SMALL LETTER K WITH CEDILLA */ \ + OP(L'Ļ', RALT(LSHIFT(Key_L))) /* U+013b, XKB_KEY_Lcedilla, LATIN CAPITAL LETTER L WITH CEDILLA */ \ + OP(L'ļ', RALT(Key_L)) /* U+013c, XKB_KEY_lcedilla, LATIN SMALL LETTER L WITH CEDILLA */ \ + OP(L'Ņ', RALT(LSHIFT(Key_N))) /* U+0145, XKB_KEY_Ncedilla, LATIN CAPITAL LETTER N WITH CEDILLA */ \ + OP(L'ņ', RALT(Key_N)) /* U+0146, XKB_KEY_ncedilla, LATIN SMALL LETTER N WITH CEDILLA */ \ + OP(L'Ō', RALT(LSHIFT(Key_O))) /* U+014c, XKB_KEY_Omacron, LATIN CAPITAL LETTER O WITH MACRON */ \ + OP(L'ō', RALT(Key_O)) /* U+014d, XKB_KEY_omacron, LATIN SMALL LETTER O WITH MACRON */ \ + OP(L'Ŗ', RALT(LSHIFT(Key_R))) /* U+0156, XKB_KEY_Rcedilla, LATIN CAPITAL LETTER R WITH CEDILLA */ \ + OP(L'ŗ', RALT(Key_R)) /* U+0157, XKB_KEY_rcedilla, LATIN SMALL LETTER R WITH CEDILLA */ \ + OP(L'Š', RALT(LSHIFT(Key_S))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_S)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ū', RALT(LSHIFT(Key_U))) /* U+016a, XKB_KEY_Umacron, LATIN CAPITAL LETTER U WITH MACRON */ \ + OP(L'ū', RALT(Key_U)) /* U+016b, XKB_KEY_umacron, LATIN SMALL LETTER U WITH MACRON */ \ + OP(L'Ž', RALT(LSHIFT(Key_Z))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_Z)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_NonUsPound))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_Slash))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'–', RALT(Key_Equals)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Equals))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', RALT(LSHIFT(Key_LeftBracket))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_RightBracket))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Amacron, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Emacron, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gcedilla, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Latch, Key_Quote) /* XKB_KEY_ISO_Level3_Latch */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Imacron, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Kcedilla, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Lcedilla, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Ncedilla, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Omacron, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Rcedilla, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Umacron, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_acute, RALT(Key_Backtick)) \ + OP(XKB_KEY_amacron, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emacron, RALT(Key_E)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_endash, RALT(Key_Equals)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gcedilla, RALT(Key_G)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_imacron, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kcedilla, RALT(Key_K)) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_lcedilla, RALT(Key_L)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_ncedilla, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_omacron, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rcedilla, RALT(Key_R)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_umacron, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lv { +namespace apostrophe { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace apostrophe +} // namespace lv +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lv/apostrophecolemak/keymap.h b/src/kaleidoscope/host_keymap/linux/lv/apostrophecolemak/keymap.h new file mode 100644 index 0000000000..37490626e9 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lv/apostrophecolemak/keymap.h @@ -0,0 +1,553 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lv +// variant: apostrophecolemak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_G)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_E)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_T)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_L)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_Y)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_Semicolon)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_S)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_D)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_O)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_G) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_E) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_T) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_L) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_Y) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_Semicolon) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_S) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_D) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_O) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_G)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_E)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_T)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_L)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_Y)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_Semicolon)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_S)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_D)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_O)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_G) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_E) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_T) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_L) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_Y) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_Semicolon) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_S) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_D) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_O) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_LeftBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Backtick)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ā', RALT(LSHIFT(Key_A))) /* U+0100, XKB_KEY_Amacron, LATIN CAPITAL LETTER A WITH MACRON */ \ + OP(L'ā', RALT(Key_A)) /* U+0101, XKB_KEY_amacron, LATIN SMALL LETTER A WITH MACRON */ \ + OP(L'Č', RALT(LSHIFT(Key_C))) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', RALT(Key_C)) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Ē', RALT(LSHIFT(Key_K))) /* U+0112, XKB_KEY_Emacron, LATIN CAPITAL LETTER E WITH MACRON */ \ + OP(L'ē', RALT(Key_K)) /* U+0113, XKB_KEY_emacron, LATIN SMALL LETTER E WITH MACRON */ \ + OP(L'Ģ', RALT(LSHIFT(Key_T))) /* U+0122, XKB_KEY_Gcedilla, LATIN CAPITAL LETTER G WITH CEDILLA */ \ + OP(L'ģ', RALT(Key_T)) /* U+0123, XKB_KEY_gcedilla, LATIN SMALL LETTER G WITH CEDILLA */ \ + OP(L'Ī', RALT(LSHIFT(Key_L))) /* U+012a, XKB_KEY_Imacron, LATIN CAPITAL LETTER I WITH MACRON */ \ + OP(L'ī', RALT(Key_L)) /* U+012b, XKB_KEY_imacron, LATIN SMALL LETTER I WITH MACRON */ \ + OP(L'Ķ', RALT(LSHIFT(Key_N))) /* U+0136, XKB_KEY_Kcedilla, LATIN CAPITAL LETTER K WITH CEDILLA */ \ + OP(L'ķ', RALT(Key_N)) /* U+0137, XKB_KEY_kcedilla, LATIN SMALL LETTER K WITH CEDILLA */ \ + OP(L'Ļ', RALT(LSHIFT(Key_U))) /* U+013b, XKB_KEY_Lcedilla, LATIN CAPITAL LETTER L WITH CEDILLA */ \ + OP(L'ļ', RALT(Key_U)) /* U+013c, XKB_KEY_lcedilla, LATIN SMALL LETTER L WITH CEDILLA */ \ + OP(L'Ņ', RALT(LSHIFT(Key_J))) /* U+0145, XKB_KEY_Ncedilla, LATIN CAPITAL LETTER N WITH CEDILLA */ \ + OP(L'ņ', RALT(Key_J)) /* U+0146, XKB_KEY_ncedilla, LATIN SMALL LETTER N WITH CEDILLA */ \ + OP(L'Ō', RALT(LSHIFT(Key_Semicolon))) /* U+014c, XKB_KEY_Omacron, LATIN CAPITAL LETTER O WITH MACRON */ \ + OP(L'ō', RALT(Key_Semicolon)) /* U+014d, XKB_KEY_omacron, LATIN SMALL LETTER O WITH MACRON */ \ + OP(L'Ŗ', RALT(LSHIFT(Key_S))) /* U+0156, XKB_KEY_Rcedilla, LATIN CAPITAL LETTER R WITH CEDILLA */ \ + OP(L'ŗ', RALT(Key_S)) /* U+0157, XKB_KEY_rcedilla, LATIN SMALL LETTER R WITH CEDILLA */ \ + OP(L'Š', RALT(LSHIFT(Key_D))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_D)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ū', RALT(LSHIFT(Key_I))) /* U+016a, XKB_KEY_Umacron, LATIN CAPITAL LETTER U WITH MACRON */ \ + OP(L'ū', RALT(Key_I)) /* U+016b, XKB_KEY_umacron, LATIN SMALL LETTER U WITH MACRON */ \ + OP(L'Ž', RALT(LSHIFT(Key_Z))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_Z)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_NonUsPound))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_Slash))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'–', RALT(Key_Equals)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Equals))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', RALT(LSHIFT(Key_LeftBracket))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_RightBracket))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Amacron, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_G)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_K)) \ + OP(XKB_KEY_Emacron, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_E)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_T)) \ + OP(XKB_KEY_Gcedilla, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_L)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Latch, Key_Quote) /* XKB_KEY_ISO_Level3_Latch */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Imacron, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_Y)) \ + OP(XKB_KEY_K, LSHIFT(Key_N)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Kcedilla, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_L, LSHIFT(Key_U)) \ + OP(XKB_KEY_Lcedilla, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_J)) \ + OP(XKB_KEY_Ncedilla, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Omacron, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_S)) \ + OP(XKB_KEY_Rcedilla, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_D)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_F)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_I)) \ + OP(XKB_KEY_Umacron, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_O)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_acute, RALT(Key_Backtick)) \ + OP(XKB_KEY_amacron, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, LSHIFT(Key_P)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_G) \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_K) \ + OP(XKB_KEY_emacron, RALT(Key_K)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_endash, RALT(Key_Equals)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_E) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_T) \ + OP(XKB_KEY_gcedilla, RALT(Key_T)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_i, Key_L) \ + OP(XKB_KEY_imacron, RALT(Key_L)) \ + OP(XKB_KEY_j, Key_Y) \ + OP(XKB_KEY_k, Key_N) \ + OP(XKB_KEY_kcedilla, RALT(Key_N)) \ + OP(XKB_KEY_l, Key_U) \ + OP(XKB_KEY_lcedilla, RALT(Key_U)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_J) \ + OP(XKB_KEY_ncedilla, RALT(Key_J)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_Semicolon) \ + OP(XKB_KEY_omacron, RALT(Key_Semicolon)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_S) \ + OP(XKB_KEY_rcedilla, RALT(Key_S)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_s, Key_D) \ + OP(XKB_KEY_scaron, RALT(Key_D)) \ + OP(XKB_KEY_semicolon, Key_P) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_F) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_I) \ + OP(XKB_KEY_umacron, RALT(Key_I)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_O) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lv { +namespace apostrophecolemak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace apostrophecolemak +} // namespace lv +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lv/colemak/keymap.h b/src/kaleidoscope/host_keymap/linux/lv/colemak/keymap.h new file mode 100644 index 0000000000..e44182c70a --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lv/colemak/keymap.h @@ -0,0 +1,554 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lv +// variant: colemak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_G)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_E)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_T)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_L)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_Y)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_Semicolon)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_S)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_D)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_O)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_G) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_E) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_T) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_L) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_Y) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_Semicolon) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_S) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_D) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_O) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_G)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_E)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_T)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_L)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_Y)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_Semicolon)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_S)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_D)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_O)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_G) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_E) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_T) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_L) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_Y) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_Semicolon) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_S) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_D) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_O) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_LeftBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Backtick)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ā', RALT(LSHIFT(Key_A))) /* U+0100, XKB_KEY_Amacron, LATIN CAPITAL LETTER A WITH MACRON */ \ + OP(L'ā', RALT(Key_A)) /* U+0101, XKB_KEY_amacron, LATIN SMALL LETTER A WITH MACRON */ \ + OP(L'Č', RALT(LSHIFT(Key_C))) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', RALT(Key_C)) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Ē', RALT(LSHIFT(Key_K))) /* U+0112, XKB_KEY_Emacron, LATIN CAPITAL LETTER E WITH MACRON */ \ + OP(L'ē', RALT(Key_K)) /* U+0113, XKB_KEY_emacron, LATIN SMALL LETTER E WITH MACRON */ \ + OP(L'Ģ', RALT(LSHIFT(Key_T))) /* U+0122, XKB_KEY_Gcedilla, LATIN CAPITAL LETTER G WITH CEDILLA */ \ + OP(L'ģ', RALT(Key_T)) /* U+0123, XKB_KEY_gcedilla, LATIN SMALL LETTER G WITH CEDILLA */ \ + OP(L'Ī', RALT(LSHIFT(Key_L))) /* U+012a, XKB_KEY_Imacron, LATIN CAPITAL LETTER I WITH MACRON */ \ + OP(L'ī', RALT(Key_L)) /* U+012b, XKB_KEY_imacron, LATIN SMALL LETTER I WITH MACRON */ \ + OP(L'Ķ', RALT(LSHIFT(Key_N))) /* U+0136, XKB_KEY_Kcedilla, LATIN CAPITAL LETTER K WITH CEDILLA */ \ + OP(L'ķ', RALT(Key_N)) /* U+0137, XKB_KEY_kcedilla, LATIN SMALL LETTER K WITH CEDILLA */ \ + OP(L'Ļ', RALT(LSHIFT(Key_U))) /* U+013b, XKB_KEY_Lcedilla, LATIN CAPITAL LETTER L WITH CEDILLA */ \ + OP(L'ļ', RALT(Key_U)) /* U+013c, XKB_KEY_lcedilla, LATIN SMALL LETTER L WITH CEDILLA */ \ + OP(L'Ņ', RALT(LSHIFT(Key_J))) /* U+0145, XKB_KEY_Ncedilla, LATIN CAPITAL LETTER N WITH CEDILLA */ \ + OP(L'ņ', RALT(Key_J)) /* U+0146, XKB_KEY_ncedilla, LATIN SMALL LETTER N WITH CEDILLA */ \ + OP(L'Ō', RALT(LSHIFT(Key_Semicolon))) /* U+014c, XKB_KEY_Omacron, LATIN CAPITAL LETTER O WITH MACRON */ \ + OP(L'ō', RALT(Key_Semicolon)) /* U+014d, XKB_KEY_omacron, LATIN SMALL LETTER O WITH MACRON */ \ + OP(L'Ŗ', RALT(LSHIFT(Key_S))) /* U+0156, XKB_KEY_Rcedilla, LATIN CAPITAL LETTER R WITH CEDILLA */ \ + OP(L'ŗ', RALT(Key_S)) /* U+0157, XKB_KEY_rcedilla, LATIN SMALL LETTER R WITH CEDILLA */ \ + OP(L'Š', RALT(LSHIFT(Key_D))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_D)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ū', RALT(LSHIFT(Key_I))) /* U+016a, XKB_KEY_Umacron, LATIN CAPITAL LETTER U WITH MACRON */ \ + OP(L'ū', RALT(Key_I)) /* U+016b, XKB_KEY_umacron, LATIN SMALL LETTER U WITH MACRON */ \ + OP(L'Ž', RALT(LSHIFT(Key_Z))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_Z)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_NonUsPound))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_Slash))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'–', RALT(Key_Equals)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Equals))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', RALT(Key_Quote)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_RightBracket))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_Quote))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Amacron, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_G)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_K)) \ + OP(XKB_KEY_Emacron, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_E)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_T)) \ + OP(XKB_KEY_Gcedilla, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_L)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Imacron, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_Y)) \ + OP(XKB_KEY_K, LSHIFT(Key_N)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Kcedilla, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_L, LSHIFT(Key_U)) \ + OP(XKB_KEY_Lcedilla, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_J)) \ + OP(XKB_KEY_Ncedilla, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Omacron, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_S)) \ + OP(XKB_KEY_Rcedilla, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_D)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_F)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_I)) \ + OP(XKB_KEY_Umacron, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_O)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_acute, RALT(Key_Backtick)) \ + OP(XKB_KEY_amacron, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, LSHIFT(Key_P)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_G) \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_e, Key_K) \ + OP(XKB_KEY_emacron, RALT(Key_K)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_endash, RALT(Key_Equals)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_E) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_T) \ + OP(XKB_KEY_gcedilla, RALT(Key_T)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_i, Key_L) \ + OP(XKB_KEY_imacron, RALT(Key_L)) \ + OP(XKB_KEY_j, Key_Y) \ + OP(XKB_KEY_k, Key_N) \ + OP(XKB_KEY_kcedilla, RALT(Key_N)) \ + OP(XKB_KEY_l, Key_U) \ + OP(XKB_KEY_lcedilla, RALT(Key_U)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_Quote)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_J) \ + OP(XKB_KEY_ncedilla, RALT(Key_J)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_Semicolon) \ + OP(XKB_KEY_omacron, RALT(Key_Semicolon)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_S) \ + OP(XKB_KEY_rcedilla, RALT(Key_S)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_s, Key_D) \ + OP(XKB_KEY_scaron, RALT(Key_D)) \ + OP(XKB_KEY_semicolon, Key_P) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_F) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_I) \ + OP(XKB_KEY_umacron, RALT(Key_I)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_O) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lv { +namespace colemak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace colemak +} // namespace lv +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lv/dvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/lv/dvorak/keymap.h new file mode 100644 index 0000000000..c73604430b --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lv/dvorak/keymap.h @@ -0,0 +1,550 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lv +// variant: dvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', Key_Backtick) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', Key_Backtick) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_W)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Backtick)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_E)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Quote))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'×', RALT(LSHIFT(Key_W))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(LSHIFT(Key_E))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ā', RALT(LSHIFT(Key_A))) /* U+0100, XKB_KEY_Amacron, LATIN CAPITAL LETTER A WITH MACRON */ \ + OP(L'ā', RALT(Key_A)) /* U+0101, XKB_KEY_amacron, LATIN SMALL LETTER A WITH MACRON */ \ + OP(L'Č', RALT(LSHIFT(Key_I))) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', RALT(Key_I)) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Ē', RALT(LSHIFT(Key_D))) /* U+0112, XKB_KEY_Emacron, LATIN CAPITAL LETTER E WITH MACRON */ \ + OP(L'ē', RALT(Key_D)) /* U+0113, XKB_KEY_emacron, LATIN SMALL LETTER E WITH MACRON */ \ + OP(L'Ģ', RALT(LSHIFT(Key_U))) /* U+0122, XKB_KEY_Gcedilla, LATIN CAPITAL LETTER G WITH CEDILLA */ \ + OP(L'ģ', RALT(Key_U)) /* U+0123, XKB_KEY_gcedilla, LATIN SMALL LETTER G WITH CEDILLA */ \ + OP(L'Ī', RALT(LSHIFT(Key_G))) /* U+012a, XKB_KEY_Imacron, LATIN CAPITAL LETTER I WITH MACRON */ \ + OP(L'ī', RALT(Key_G)) /* U+012b, XKB_KEY_imacron, LATIN SMALL LETTER I WITH MACRON */ \ + OP(L'Ķ', RALT(LSHIFT(Key_V))) /* U+0136, XKB_KEY_Kcedilla, LATIN CAPITAL LETTER K WITH CEDILLA */ \ + OP(L'ķ', RALT(Key_V)) /* U+0137, XKB_KEY_kcedilla, LATIN SMALL LETTER K WITH CEDILLA */ \ + OP(L'Ļ', RALT(LSHIFT(Key_P))) /* U+013b, XKB_KEY_Lcedilla, LATIN CAPITAL LETTER L WITH CEDILLA */ \ + OP(L'ļ', RALT(Key_P)) /* U+013c, XKB_KEY_lcedilla, LATIN SMALL LETTER L WITH CEDILLA */ \ + OP(L'Ņ', RALT(LSHIFT(Key_L))) /* U+0145, XKB_KEY_Ncedilla, LATIN CAPITAL LETTER N WITH CEDILLA */ \ + OP(L'ņ', RALT(Key_L)) /* U+0146, XKB_KEY_ncedilla, LATIN SMALL LETTER N WITH CEDILLA */ \ + OP(L'Ō', RALT(LSHIFT(Key_S))) /* U+014c, XKB_KEY_Omacron, LATIN CAPITAL LETTER O WITH MACRON */ \ + OP(L'ō', RALT(Key_S)) /* U+014d, XKB_KEY_omacron, LATIN SMALL LETTER O WITH MACRON */ \ + OP(L'Ŗ', RALT(LSHIFT(Key_O))) /* U+0156, XKB_KEY_Rcedilla, LATIN CAPITAL LETTER R WITH CEDILLA */ \ + OP(L'ŗ', RALT(Key_O)) /* U+0157, XKB_KEY_rcedilla, LATIN SMALL LETTER R WITH CEDILLA */ \ + OP(L'Š', RALT(LSHIFT(Key_Semicolon))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_Semicolon)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ū', RALT(LSHIFT(Key_F))) /* U+016a, XKB_KEY_Umacron, LATIN CAPITAL LETTER U WITH MACRON */ \ + OP(L'ū', RALT(Key_F)) /* U+016b, XKB_KEY_umacron, LATIN SMALL LETTER U WITH MACRON */ \ + OP(L'Ž', RALT(LSHIFT(Key_Slash))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_Slash)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_NonUsPound))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_LeftBracket))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'–', RALT(Key_RightBracket)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_RightBracket))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', RALT(Key_Minus)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_Equals)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_Q))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Amacron, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_Emacron, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_Gcedilla, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Imacron, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Kcedilla, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Lcedilla, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Ncedilla, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_Omacron, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Rcedilla, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Umacron, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_acute, RALT(Key_Backtick)) \ + OP(XKB_KEY_amacron, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Q) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, Key_Backtick) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_Minus) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_ccaron, RALT(Key_I)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Z)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_emacron, RALT(Key_D)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_endash, RALT(Key_RightBracket)) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_gcedilla, RALT(Key_U)) \ + OP(XKB_KEY_grave, LSHIFT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_W)) \ + OP(XKB_KEY_guillemotright, RALT(Key_E)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_imacron, RALT(Key_G)) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_kcedilla, RALT(Key_V)) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_lcedilla, RALT(Key_P)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_Minus)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_ncedilla, RALT(Key_L)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_omacron, RALT(Key_S)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_plus, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Q)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_rcedilla, RALT(Key_O)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_Equals)) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_scaron, RALT(Key_Semicolon)) \ + OP(XKB_KEY_semicolon, Key_Z) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_umacron, RALT(Key_F)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_z, Key_Slash) \ + OP(XKB_KEY_zcaron, RALT(Key_Slash)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lv { +namespace dvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak +} // namespace lv +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lv/dvorakprogr/keymap.h b/src/kaleidoscope/host_keymap/linux/lv/dvorakprogr/keymap.h new file mode 100644 index 0000000000..23dd274321 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lv/dvorakprogr/keymap.h @@ -0,0 +1,552 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lv +// variant: dvorakprogr + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Minus) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Z)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_Equals) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_Backtick) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_1)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Z) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_8) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_7) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_9) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_7)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_5)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_8)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_4)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_9)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_3)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_0)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_2)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_Minus)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_6)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Q) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_6) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_RightBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_2) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_0) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', Key_3) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', Key_4) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Minus) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Z)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_Equals) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_Backtick) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_1)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Z) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_8) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_7) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_9) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_7)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_5)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_8)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_4)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_9)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_3)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_0)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_2)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_Minus)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_6)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Q) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_6) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_RightBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_2) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_0) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', Key_3) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', Key_4) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_Minus))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_Backtick))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_9))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_7))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_3)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(Key_0)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_7)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_9)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'´', RALT(Key_1)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¹', RALT(Key_2)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_4)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Quote))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'×', RALT(LSHIFT(Key_W))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(LSHIFT(Key_E))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ā', RALT(LSHIFT(Key_A))) /* U+0100, XKB_KEY_Amacron, LATIN CAPITAL LETTER A WITH MACRON */ \ + OP(L'ā', RALT(Key_A)) /* U+0101, XKB_KEY_amacron, LATIN SMALL LETTER A WITH MACRON */ \ + OP(L'Č', RALT(LSHIFT(Key_I))) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', RALT(Key_I)) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Ē', RALT(LSHIFT(Key_D))) /* U+0112, XKB_KEY_Emacron, LATIN CAPITAL LETTER E WITH MACRON */ \ + OP(L'ē', RALT(Key_D)) /* U+0113, XKB_KEY_emacron, LATIN SMALL LETTER E WITH MACRON */ \ + OP(L'Ģ', RALT(LSHIFT(Key_U))) /* U+0122, XKB_KEY_Gcedilla, LATIN CAPITAL LETTER G WITH CEDILLA */ \ + OP(L'ģ', RALT(Key_U)) /* U+0123, XKB_KEY_gcedilla, LATIN SMALL LETTER G WITH CEDILLA */ \ + OP(L'Ī', RALT(LSHIFT(Key_G))) /* U+012a, XKB_KEY_Imacron, LATIN CAPITAL LETTER I WITH MACRON */ \ + OP(L'ī', RALT(Key_G)) /* U+012b, XKB_KEY_imacron, LATIN SMALL LETTER I WITH MACRON */ \ + OP(L'Ķ', RALT(LSHIFT(Key_V))) /* U+0136, XKB_KEY_Kcedilla, LATIN CAPITAL LETTER K WITH CEDILLA */ \ + OP(L'ķ', RALT(Key_V)) /* U+0137, XKB_KEY_kcedilla, LATIN SMALL LETTER K WITH CEDILLA */ \ + OP(L'Ļ', RALT(LSHIFT(Key_P))) /* U+013b, XKB_KEY_Lcedilla, LATIN CAPITAL LETTER L WITH CEDILLA */ \ + OP(L'ļ', RALT(Key_P)) /* U+013c, XKB_KEY_lcedilla, LATIN SMALL LETTER L WITH CEDILLA */ \ + OP(L'Ņ', RALT(LSHIFT(Key_L))) /* U+0145, XKB_KEY_Ncedilla, LATIN CAPITAL LETTER N WITH CEDILLA */ \ + OP(L'ņ', RALT(Key_L)) /* U+0146, XKB_KEY_ncedilla, LATIN SMALL LETTER N WITH CEDILLA */ \ + OP(L'Ō', RALT(LSHIFT(Key_S))) /* U+014c, XKB_KEY_Omacron, LATIN CAPITAL LETTER O WITH MACRON */ \ + OP(L'ō', RALT(Key_S)) /* U+014d, XKB_KEY_omacron, LATIN SMALL LETTER O WITH MACRON */ \ + OP(L'Ŗ', RALT(LSHIFT(Key_O))) /* U+0156, XKB_KEY_Rcedilla, LATIN CAPITAL LETTER R WITH CEDILLA */ \ + OP(L'ŗ', RALT(Key_O)) /* U+0157, XKB_KEY_rcedilla, LATIN SMALL LETTER R WITH CEDILLA */ \ + OP(L'Š', RALT(LSHIFT(Key_Semicolon))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_Semicolon)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ū', RALT(LSHIFT(Key_F))) /* U+016a, XKB_KEY_Umacron, LATIN CAPITAL LETTER U WITH MACRON */ \ + OP(L'ū', RALT(Key_F)) /* U+016b, XKB_KEY_umacron, LATIN SMALL LETTER U WITH MACRON */ \ + OP(L'Ž', RALT(LSHIFT(Key_Slash))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_Slash)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_NonUsPound))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_LeftBracket))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'α', RALT(Key_Equals)) /* U+03b1, XKB_KEY_Greek_alpha, GREEK SMALL LETTER ALPHA */ \ + OP(L'β', RALT(LSHIFT(Key_Equals))) /* U+03b2, XKB_KEY_Greek_beta, GREEK SMALL LETTER BETA */ \ + OP(L'–', RALT(Key_8)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_8))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', RALT(Key_Z)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_4))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_Z))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_Backtick)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_0))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_7)) \ + OP(XKB_KEY_1, LSHIFT(Key_5)) \ + OP(XKB_KEY_2, LSHIFT(Key_8)) \ + OP(XKB_KEY_3, LSHIFT(Key_4)) \ + OP(XKB_KEY_4, LSHIFT(Key_9)) \ + OP(XKB_KEY_5, LSHIFT(Key_3)) \ + OP(XKB_KEY_6, LSHIFT(Key_0)) \ + OP(XKB_KEY_7, LSHIFT(Key_2)) \ + OP(XKB_KEY_8, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_9, LSHIFT(Key_6)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Amacron, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_Emacron, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_Backtick)) \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_Gcedilla, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Greek_alpha, RALT(Key_Equals)) \ + OP(XKB_KEY_Greek_beta, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Imacron, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Kcedilla, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Lcedilla, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Ncedilla, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_Omacron, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Rcedilla, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Umacron, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_acute, RALT(Key_1)) \ + OP(XKB_KEY_amacron, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_Z) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, Key_7) \ + OP(XKB_KEY_at, Key_RightBracket) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, Key_3) \ + OP(XKB_KEY_braceright, Key_4) \ + OP(XKB_KEY_bracketleft, Key_2) \ + OP(XKB_KEY_bracketright, Key_0) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_ccaron, RALT(Key_I)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Q)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_degree, RALT(Key_7)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_dollar, Key_Backtick) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_emacron, RALT(Key_D)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_endash, RALT(Key_8)) \ + OP(XKB_KEY_equal, Key_6) \ + OP(XKB_KEY_exclam, Key_Minus) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_gcedilla, RALT(Key_U)) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_3)) \ + OP(XKB_KEY_guillemotright, RALT(Key_4)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_imacron, RALT(Key_G)) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_kcedilla, RALT(Key_V)) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_lcedilla, RALT(Key_P)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_ncedilla, RALT(Key_L)) \ + OP(XKB_KEY_numbersign, Key_Equals) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_omacron, RALT(Key_S)) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_2)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_8) \ + OP(XKB_KEY_percent, LSHIFT(Key_1)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_plus, Key_9) \ + OP(XKB_KEY_plusminus, RALT(Key_9)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Z)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_rcedilla, RALT(Key_O)) \ + OP(XKB_KEY_registered, RALT(Key_0)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_scaron, RALT(Key_Semicolon)) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_semicolon, Key_Q) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_umacron, RALT(Key_F)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_z, Key_Slash) \ + OP(XKB_KEY_zcaron, RALT(Key_Slash)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lv { +namespace dvorakprogr { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorakprogr +} // namespace lv +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lv/ergonomic/keymap.h b/src/kaleidoscope/host_keymap/linux/lv/ergonomic/keymap.h new file mode 100644 index 0000000000..630c088992 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lv/ergonomic/keymap.h @@ -0,0 +1,526 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lv +// variant: ergonomic + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', RALT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', RALT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_J)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_X)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_Semicolon)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_L)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Equals)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_RightBracket)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_F)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_E)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_G)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_T)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_U)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_N)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_B)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_D)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_S)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Y)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', RALT(LSHIFT(Key_Y))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', RALT(LSHIFT(Key_U))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_I)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(LSHIFT(Key_NonUsPound))) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_J) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_X) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_Semicolon) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_L) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Equals) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_RightBracket) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_F) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_E) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_G) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_T) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_U) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_N) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_B) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_D) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_S) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Y) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', RALT(Key_Y)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', RALT(Key_U)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_I) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', RALT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', RALT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_J)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_X)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_Semicolon)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_L)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Equals)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_RightBracket)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_F)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_E)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_G)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_T)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_U)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_N)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_B)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_D)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_S)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Y)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', RALT(LSHIFT(Key_Y))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', RALT(LSHIFT(Key_U))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_I)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(LSHIFT(Key_NonUsPound))) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_J) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_X) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_Semicolon) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_L) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Equals) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_RightBracket) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_F) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_E) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_G) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_T) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_U) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_N) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_B) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_D) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_S) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Y) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', RALT(Key_Y)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', RALT(Key_U)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_I) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Backtick)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ā', LSHIFT(Key_M)) /* U+0100, XKB_KEY_Amacron, LATIN CAPITAL LETTER A WITH MACRON */ \ + OP(L'ā', Key_M) /* U+0101, XKB_KEY_amacron, LATIN SMALL LETTER A WITH MACRON */ \ + OP(L'Č', LSHIFT(Key_P)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_P) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Ē', LSHIFT(Key_O)) /* U+0112, XKB_KEY_Emacron, LATIN CAPITAL LETTER E WITH MACRON */ \ + OP(L'ē', Key_O) /* U+0113, XKB_KEY_emacron, LATIN SMALL LETTER E WITH MACRON */ \ + OP(L'Ģ', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+0122, XKB_KEY_Gcedilla, LATIN CAPITAL LETTER G WITH CEDILLA */ \ + OP(L'ģ', Key_NonUsBackslashAndPipe) /* U+0123, XKB_KEY_gcedilla, LATIN SMALL LETTER G WITH CEDILLA */ \ + OP(L'Ī', LSHIFT(Key_C)) /* U+012a, XKB_KEY_Imacron, LATIN CAPITAL LETTER I WITH MACRON */ \ + OP(L'ī', Key_C) /* U+012b, XKB_KEY_imacron, LATIN SMALL LETTER I WITH MACRON */ \ + OP(L'Ķ', LSHIFT(Key_NonUsPound)) /* U+0136, XKB_KEY_Kcedilla, LATIN CAPITAL LETTER K WITH CEDILLA */ \ + OP(L'ķ', Key_NonUsPound) /* U+0137, XKB_KEY_kcedilla, LATIN SMALL LETTER K WITH CEDILLA */ \ + OP(L'Ļ', LSHIFT(Key_Slash)) /* U+013b, XKB_KEY_Lcedilla, LATIN CAPITAL LETTER L WITH CEDILLA */ \ + OP(L'ļ', Key_Slash) /* U+013c, XKB_KEY_lcedilla, LATIN SMALL LETTER L WITH CEDILLA */ \ + OP(L'Ņ', LSHIFT(Key_Z)) /* U+0145, XKB_KEY_Ncedilla, LATIN CAPITAL LETTER N WITH CEDILLA */ \ + OP(L'ņ', Key_Z) /* U+0146, XKB_KEY_ncedilla, LATIN SMALL LETTER N WITH CEDILLA */ \ + OP(L'Ō', RALT(LSHIFT(Key_N))) /* U+014c, XKB_KEY_Omacron, LATIN CAPITAL LETTER O WITH MACRON */ \ + OP(L'ō', RALT(Key_N)) /* U+014d, XKB_KEY_omacron, LATIN SMALL LETTER O WITH MACRON */ \ + OP(L'Ŗ', RALT(LSHIFT(Key_R))) /* U+0156, XKB_KEY_Rcedilla, LATIN CAPITAL LETTER R WITH CEDILLA */ \ + OP(L'ŗ', RALT(Key_R)) /* U+0157, XKB_KEY_rcedilla, LATIN SMALL LETTER R WITH CEDILLA */ \ + OP(L'Š', LSHIFT(Key_A)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_A) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ū', LSHIFT(Key_Q)) /* U+016a, XKB_KEY_Umacron, LATIN CAPITAL LETTER U WITH MACRON */ \ + OP(L'ū', Key_Q) /* U+016b, XKB_KEY_umacron, LATIN SMALL LETTER U WITH MACRON */ \ + OP(L'Ž', LSHIFT(Key_LeftBracket)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_LeftBracket) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Minus))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_J)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Amacron, LSHIFT(Key_M)) \ + OP(XKB_KEY_B, LSHIFT(Key_X)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_P)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_L)) \ + OP(XKB_KEY_Emacron, LSHIFT(Key_O)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_W)) \ + OP(XKB_KEY_Gcedilla, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_H, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_F)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Latch, Key_Quote) /* XKB_KEY_ISO_Level3_Latch */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Imacron, LSHIFT(Key_C)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_E)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Kcedilla, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_L, LSHIFT(Key_G)) \ + OP(XKB_KEY_Lcedilla, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_T)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ncedilla, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_N)) \ + OP(XKB_KEY_Omacron, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_P, LSHIFT(Key_B)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Rcedilla, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_D)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_A)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_S)) \ + OP(XKB_KEY_Umacron, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Y)) \ + OP(XKB_KEY_W, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_X, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Z, LSHIFT(Key_I)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_a, Key_J) \ + OP(XKB_KEY_acute, RALT(Key_Backtick)) \ + OP(XKB_KEY_amacron, Key_M) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_X) \ + OP(XKB_KEY_backslash, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_Semicolon) \ + OP(XKB_KEY_ccaron, Key_P) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_L) \ + OP(XKB_KEY_emacron, Key_O) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_equal, RALT(Key_Equals)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_Equals) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_W) \ + OP(XKB_KEY_gcedilla, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_h, Key_RightBracket) \ + OP(XKB_KEY_i, Key_F) \ + OP(XKB_KEY_imacron, Key_C) \ + OP(XKB_KEY_j, Key_E) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_kcedilla, Key_NonUsPound) \ + OP(XKB_KEY_l, Key_G) \ + OP(XKB_KEY_lcedilla, Key_Slash) \ + OP(XKB_KEY_less, RALT(Key_Comma)) \ + OP(XKB_KEY_m, Key_T) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_U) \ + OP(XKB_KEY_ncedilla, Key_Z) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_N) \ + OP(XKB_KEY_omacron, RALT(Key_N)) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_B) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, RALT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rcedilla, RALT(Key_R)) \ + OP(XKB_KEY_s, Key_D) \ + OP(XKB_KEY_scaron, Key_A) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_u, Key_S) \ + OP(XKB_KEY_umacron, Key_Q) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_Y) \ + OP(XKB_KEY_w, RALT(Key_Y)) \ + OP(XKB_KEY_x, RALT(Key_X)) \ + OP(XKB_KEY_y, RALT(Key_U)) \ + OP(XKB_KEY_z, Key_I) \ + OP(XKB_KEY_zcaron, Key_LeftBracket) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lv { +namespace ergonomic { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ergonomic +} // namespace lv +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lv/fkey/keymap.h b/src/kaleidoscope/host_keymap/linux/lv/fkey/keymap.h new file mode 100644 index 0000000000..4212925922 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lv/fkey/keymap.h @@ -0,0 +1,555 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lv +// variant: fkey + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', RALT(LSHIFT(Key_F))) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', RALT(Key_F)) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', RALT(LSHIFT(Key_F))) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', RALT(Key_F)) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_LeftBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Backtick)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ā', RALT(LSHIFT(Key_A))) /* U+0100, XKB_KEY_Amacron, LATIN CAPITAL LETTER A WITH MACRON */ \ + OP(L'ā', RALT(Key_A)) /* U+0101, XKB_KEY_amacron, LATIN SMALL LETTER A WITH MACRON */ \ + OP(L'Č', RALT(LSHIFT(Key_C))) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', RALT(Key_C)) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Ē', RALT(LSHIFT(Key_E))) /* U+0112, XKB_KEY_Emacron, LATIN CAPITAL LETTER E WITH MACRON */ \ + OP(L'ē', RALT(Key_E)) /* U+0113, XKB_KEY_emacron, LATIN SMALL LETTER E WITH MACRON */ \ + OP(L'Ģ', RALT(LSHIFT(Key_G))) /* U+0122, XKB_KEY_Gcedilla, LATIN CAPITAL LETTER G WITH CEDILLA */ \ + OP(L'ģ', RALT(Key_G)) /* U+0123, XKB_KEY_gcedilla, LATIN SMALL LETTER G WITH CEDILLA */ \ + OP(L'Ī', RALT(LSHIFT(Key_I))) /* U+012a, XKB_KEY_Imacron, LATIN CAPITAL LETTER I WITH MACRON */ \ + OP(L'ī', RALT(Key_I)) /* U+012b, XKB_KEY_imacron, LATIN SMALL LETTER I WITH MACRON */ \ + OP(L'Ķ', RALT(LSHIFT(Key_K))) /* U+0136, XKB_KEY_Kcedilla, LATIN CAPITAL LETTER K WITH CEDILLA */ \ + OP(L'ķ', RALT(Key_K)) /* U+0137, XKB_KEY_kcedilla, LATIN SMALL LETTER K WITH CEDILLA */ \ + OP(L'Ļ', RALT(LSHIFT(Key_L))) /* U+013b, XKB_KEY_Lcedilla, LATIN CAPITAL LETTER L WITH CEDILLA */ \ + OP(L'ļ', RALT(Key_L)) /* U+013c, XKB_KEY_lcedilla, LATIN SMALL LETTER L WITH CEDILLA */ \ + OP(L'Ņ', RALT(LSHIFT(Key_N))) /* U+0145, XKB_KEY_Ncedilla, LATIN CAPITAL LETTER N WITH CEDILLA */ \ + OP(L'ņ', RALT(Key_N)) /* U+0146, XKB_KEY_ncedilla, LATIN SMALL LETTER N WITH CEDILLA */ \ + OP(L'Ō', RALT(LSHIFT(Key_O))) /* U+014c, XKB_KEY_Omacron, LATIN CAPITAL LETTER O WITH MACRON */ \ + OP(L'ō', RALT(Key_O)) /* U+014d, XKB_KEY_omacron, LATIN SMALL LETTER O WITH MACRON */ \ + OP(L'Ŗ', RALT(LSHIFT(Key_R))) /* U+0156, XKB_KEY_Rcedilla, LATIN CAPITAL LETTER R WITH CEDILLA */ \ + OP(L'ŗ', RALT(Key_R)) /* U+0157, XKB_KEY_rcedilla, LATIN SMALL LETTER R WITH CEDILLA */ \ + OP(L'Š', RALT(LSHIFT(Key_S))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_S)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ū', RALT(LSHIFT(Key_U))) /* U+016a, XKB_KEY_Umacron, LATIN CAPITAL LETTER U WITH MACRON */ \ + OP(L'ū', RALT(Key_U)) /* U+016b, XKB_KEY_umacron, LATIN SMALL LETTER U WITH MACRON */ \ + OP(L'Ž', RALT(LSHIFT(Key_Z))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_Z)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_NonUsPound))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_Slash))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'–', RALT(Key_Equals)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Equals))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', RALT(Key_Quote)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_RightBracket))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_Quote))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Amacron, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Emacron, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gcedilla, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Latch, Key_F) /* XKB_KEY_ISO_Level3_Latch */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Imacron, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Kcedilla, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Lcedilla, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Ncedilla, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Omacron, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Rcedilla, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Umacron, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_acute, RALT(Key_Backtick)) \ + OP(XKB_KEY_amacron, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emacron, RALT(Key_E)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_endash, RALT(Key_Equals)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, RALT(Key_F)) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gcedilla, RALT(Key_G)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_imacron, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kcedilla, RALT(Key_K)) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_lcedilla, RALT(Key_L)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_Quote)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_ncedilla, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_omacron, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rcedilla, RALT(Key_R)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_umacron, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lv { +namespace fkey { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace fkey +} // namespace lv +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lv/minuskeydvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/lv/minuskeydvorak/keymap.h new file mode 100644 index 0000000000..50458191c9 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lv/minuskeydvorak/keymap.h @@ -0,0 +1,549 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lv +// variant: minuskeydvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', RALT(LSHIFT(Key_Quote))) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', Key_Backtick) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', RALT(LSHIFT(Key_Quote))) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', Key_Backtick) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_W)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Backtick)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_E)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'×', RALT(LSHIFT(Key_W))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(LSHIFT(Key_E))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ā', RALT(LSHIFT(Key_A))) /* U+0100, XKB_KEY_Amacron, LATIN CAPITAL LETTER A WITH MACRON */ \ + OP(L'ā', RALT(Key_A)) /* U+0101, XKB_KEY_amacron, LATIN SMALL LETTER A WITH MACRON */ \ + OP(L'Č', RALT(LSHIFT(Key_I))) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', RALT(Key_I)) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Ē', RALT(LSHIFT(Key_D))) /* U+0112, XKB_KEY_Emacron, LATIN CAPITAL LETTER E WITH MACRON */ \ + OP(L'ē', RALT(Key_D)) /* U+0113, XKB_KEY_emacron, LATIN SMALL LETTER E WITH MACRON */ \ + OP(L'Ģ', RALT(LSHIFT(Key_U))) /* U+0122, XKB_KEY_Gcedilla, LATIN CAPITAL LETTER G WITH CEDILLA */ \ + OP(L'ģ', RALT(Key_U)) /* U+0123, XKB_KEY_gcedilla, LATIN SMALL LETTER G WITH CEDILLA */ \ + OP(L'Ī', RALT(LSHIFT(Key_G))) /* U+012a, XKB_KEY_Imacron, LATIN CAPITAL LETTER I WITH MACRON */ \ + OP(L'ī', RALT(Key_G)) /* U+012b, XKB_KEY_imacron, LATIN SMALL LETTER I WITH MACRON */ \ + OP(L'Ķ', RALT(LSHIFT(Key_V))) /* U+0136, XKB_KEY_Kcedilla, LATIN CAPITAL LETTER K WITH CEDILLA */ \ + OP(L'ķ', RALT(Key_V)) /* U+0137, XKB_KEY_kcedilla, LATIN SMALL LETTER K WITH CEDILLA */ \ + OP(L'Ļ', RALT(LSHIFT(Key_P))) /* U+013b, XKB_KEY_Lcedilla, LATIN CAPITAL LETTER L WITH CEDILLA */ \ + OP(L'ļ', RALT(Key_P)) /* U+013c, XKB_KEY_lcedilla, LATIN SMALL LETTER L WITH CEDILLA */ \ + OP(L'Ņ', RALT(LSHIFT(Key_L))) /* U+0145, XKB_KEY_Ncedilla, LATIN CAPITAL LETTER N WITH CEDILLA */ \ + OP(L'ņ', RALT(Key_L)) /* U+0146, XKB_KEY_ncedilla, LATIN SMALL LETTER N WITH CEDILLA */ \ + OP(L'Ō', RALT(LSHIFT(Key_S))) /* U+014c, XKB_KEY_Omacron, LATIN CAPITAL LETTER O WITH MACRON */ \ + OP(L'ō', RALT(Key_S)) /* U+014d, XKB_KEY_omacron, LATIN SMALL LETTER O WITH MACRON */ \ + OP(L'Ŗ', RALT(LSHIFT(Key_O))) /* U+0156, XKB_KEY_Rcedilla, LATIN CAPITAL LETTER R WITH CEDILLA */ \ + OP(L'ŗ', RALT(Key_O)) /* U+0157, XKB_KEY_rcedilla, LATIN SMALL LETTER R WITH CEDILLA */ \ + OP(L'Š', RALT(LSHIFT(Key_Semicolon))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_Semicolon)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ū', RALT(LSHIFT(Key_F))) /* U+016a, XKB_KEY_Umacron, LATIN CAPITAL LETTER U WITH MACRON */ \ + OP(L'ū', RALT(Key_F)) /* U+016b, XKB_KEY_umacron, LATIN SMALL LETTER U WITH MACRON */ \ + OP(L'Ž', RALT(LSHIFT(Key_Slash))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_Slash)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_NonUsPound))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_LeftBracket))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'–', RALT(Key_RightBracket)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_RightBracket))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', RALT(Key_Minus)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_Equals)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_Q))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Amacron, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_Emacron, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_Gcedilla, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Latch, Key_Quote) /* XKB_KEY_ISO_Level3_Latch */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Imacron, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Kcedilla, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Lcedilla, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Ncedilla, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_Omacron, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Rcedilla, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Umacron, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_acute, RALT(Key_Backtick)) \ + OP(XKB_KEY_amacron, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Q) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, Key_Backtick) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_Minus) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_ccaron, RALT(Key_I)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Z)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_emacron, RALT(Key_D)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_endash, RALT(Key_RightBracket)) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_gcedilla, RALT(Key_U)) \ + OP(XKB_KEY_grave, LSHIFT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_W)) \ + OP(XKB_KEY_guillemotright, RALT(Key_E)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_imacron, RALT(Key_G)) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_kcedilla, RALT(Key_V)) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_lcedilla, RALT(Key_P)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_Minus)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, RALT(Key_Quote)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_ncedilla, RALT(Key_L)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_omacron, RALT(Key_S)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_plus, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Q)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_rcedilla, RALT(Key_O)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_Equals)) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_scaron, RALT(Key_Semicolon)) \ + OP(XKB_KEY_semicolon, Key_Z) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_umacron, RALT(Key_F)) \ + OP(XKB_KEY_underscore, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_z, Key_Slash) \ + OP(XKB_KEY_zcaron, RALT(Key_Slash)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lv { +namespace minuskeydvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace minuskeydvorak +} // namespace lv +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lv/minuskeydvorakprogr/keymap.h b/src/kaleidoscope/host_keymap/linux/lv/minuskeydvorakprogr/keymap.h new file mode 100644 index 0000000000..25f09829d3 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lv/minuskeydvorakprogr/keymap.h @@ -0,0 +1,551 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lv +// variant: minuskeydvorakprogr + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Minus) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Z)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_Equals) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_Backtick) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_1)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Z) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_8) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_7) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_9) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_7)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_5)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_8)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_4)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_9)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_3)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_0)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_2)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_Minus)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_6)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Q) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_6) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_RightBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_2) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_0) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', RALT(LSHIFT(Key_Quote))) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', Key_3) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', Key_4) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Minus) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Z)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_Equals) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_Backtick) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_1)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Z) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_8) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_7) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_9) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_7)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_5)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_8)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_4)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_9)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_3)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_0)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_2)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_Minus)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_6)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Q) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_6) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_RightBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_2) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_0) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', RALT(LSHIFT(Key_Quote))) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', Key_3) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', Key_4) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_Minus))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_Backtick))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_9))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_7))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_3)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(Key_0)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_7)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_9)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'´', RALT(Key_1)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¹', RALT(Key_2)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_4)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'×', RALT(LSHIFT(Key_W))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(LSHIFT(Key_E))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ā', RALT(LSHIFT(Key_A))) /* U+0100, XKB_KEY_Amacron, LATIN CAPITAL LETTER A WITH MACRON */ \ + OP(L'ā', RALT(Key_A)) /* U+0101, XKB_KEY_amacron, LATIN SMALL LETTER A WITH MACRON */ \ + OP(L'Č', RALT(LSHIFT(Key_I))) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', RALT(Key_I)) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Ē', RALT(LSHIFT(Key_D))) /* U+0112, XKB_KEY_Emacron, LATIN CAPITAL LETTER E WITH MACRON */ \ + OP(L'ē', RALT(Key_D)) /* U+0113, XKB_KEY_emacron, LATIN SMALL LETTER E WITH MACRON */ \ + OP(L'Ģ', RALT(LSHIFT(Key_U))) /* U+0122, XKB_KEY_Gcedilla, LATIN CAPITAL LETTER G WITH CEDILLA */ \ + OP(L'ģ', RALT(Key_U)) /* U+0123, XKB_KEY_gcedilla, LATIN SMALL LETTER G WITH CEDILLA */ \ + OP(L'Ī', RALT(LSHIFT(Key_G))) /* U+012a, XKB_KEY_Imacron, LATIN CAPITAL LETTER I WITH MACRON */ \ + OP(L'ī', RALT(Key_G)) /* U+012b, XKB_KEY_imacron, LATIN SMALL LETTER I WITH MACRON */ \ + OP(L'Ķ', RALT(LSHIFT(Key_V))) /* U+0136, XKB_KEY_Kcedilla, LATIN CAPITAL LETTER K WITH CEDILLA */ \ + OP(L'ķ', RALT(Key_V)) /* U+0137, XKB_KEY_kcedilla, LATIN SMALL LETTER K WITH CEDILLA */ \ + OP(L'Ļ', RALT(LSHIFT(Key_P))) /* U+013b, XKB_KEY_Lcedilla, LATIN CAPITAL LETTER L WITH CEDILLA */ \ + OP(L'ļ', RALT(Key_P)) /* U+013c, XKB_KEY_lcedilla, LATIN SMALL LETTER L WITH CEDILLA */ \ + OP(L'Ņ', RALT(LSHIFT(Key_L))) /* U+0145, XKB_KEY_Ncedilla, LATIN CAPITAL LETTER N WITH CEDILLA */ \ + OP(L'ņ', RALT(Key_L)) /* U+0146, XKB_KEY_ncedilla, LATIN SMALL LETTER N WITH CEDILLA */ \ + OP(L'Ō', RALT(LSHIFT(Key_S))) /* U+014c, XKB_KEY_Omacron, LATIN CAPITAL LETTER O WITH MACRON */ \ + OP(L'ō', RALT(Key_S)) /* U+014d, XKB_KEY_omacron, LATIN SMALL LETTER O WITH MACRON */ \ + OP(L'Ŗ', RALT(LSHIFT(Key_O))) /* U+0156, XKB_KEY_Rcedilla, LATIN CAPITAL LETTER R WITH CEDILLA */ \ + OP(L'ŗ', RALT(Key_O)) /* U+0157, XKB_KEY_rcedilla, LATIN SMALL LETTER R WITH CEDILLA */ \ + OP(L'Š', RALT(LSHIFT(Key_Semicolon))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_Semicolon)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ū', RALT(LSHIFT(Key_F))) /* U+016a, XKB_KEY_Umacron, LATIN CAPITAL LETTER U WITH MACRON */ \ + OP(L'ū', RALT(Key_F)) /* U+016b, XKB_KEY_umacron, LATIN SMALL LETTER U WITH MACRON */ \ + OP(L'Ž', RALT(LSHIFT(Key_Slash))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_Slash)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_NonUsPound))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_LeftBracket))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'α', RALT(Key_Equals)) /* U+03b1, XKB_KEY_Greek_alpha, GREEK SMALL LETTER ALPHA */ \ + OP(L'β', RALT(LSHIFT(Key_Equals))) /* U+03b2, XKB_KEY_Greek_beta, GREEK SMALL LETTER BETA */ \ + OP(L'–', RALT(Key_8)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_8))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', RALT(Key_Z)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_4))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_Z))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_Backtick)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_0))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_7)) \ + OP(XKB_KEY_1, LSHIFT(Key_5)) \ + OP(XKB_KEY_2, LSHIFT(Key_8)) \ + OP(XKB_KEY_3, LSHIFT(Key_4)) \ + OP(XKB_KEY_4, LSHIFT(Key_9)) \ + OP(XKB_KEY_5, LSHIFT(Key_3)) \ + OP(XKB_KEY_6, LSHIFT(Key_0)) \ + OP(XKB_KEY_7, LSHIFT(Key_2)) \ + OP(XKB_KEY_8, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_9, LSHIFT(Key_6)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Amacron, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_Emacron, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_Backtick)) \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_Gcedilla, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Greek_alpha, RALT(Key_Equals)) \ + OP(XKB_KEY_Greek_beta, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Latch, Key_Quote) /* XKB_KEY_ISO_Level3_Latch */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Imacron, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Kcedilla, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Lcedilla, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Ncedilla, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_Omacron, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Rcedilla, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Umacron, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_acute, RALT(Key_1)) \ + OP(XKB_KEY_amacron, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_Z) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, Key_7) \ + OP(XKB_KEY_at, Key_RightBracket) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, Key_3) \ + OP(XKB_KEY_braceright, Key_4) \ + OP(XKB_KEY_bracketleft, Key_2) \ + OP(XKB_KEY_bracketright, Key_0) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_ccaron, RALT(Key_I)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Q)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_degree, RALT(Key_7)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_dollar, Key_Backtick) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_emacron, RALT(Key_D)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_endash, RALT(Key_8)) \ + OP(XKB_KEY_equal, Key_6) \ + OP(XKB_KEY_exclam, Key_Minus) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_gcedilla, RALT(Key_U)) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_3)) \ + OP(XKB_KEY_guillemotright, RALT(Key_4)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_imacron, RALT(Key_G)) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_kcedilla, RALT(Key_V)) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_lcedilla, RALT(Key_P)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, RALT(Key_Quote)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_ncedilla, RALT(Key_L)) \ + OP(XKB_KEY_numbersign, Key_Equals) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_omacron, RALT(Key_S)) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_2)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_8) \ + OP(XKB_KEY_percent, LSHIFT(Key_1)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_plus, Key_9) \ + OP(XKB_KEY_plusminus, RALT(Key_9)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Z)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_rcedilla, RALT(Key_O)) \ + OP(XKB_KEY_registered, RALT(Key_0)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_scaron, RALT(Key_Semicolon)) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_semicolon, Key_Q) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_umacron, RALT(Key_F)) \ + OP(XKB_KEY_underscore, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_z, Key_Slash) \ + OP(XKB_KEY_zcaron, RALT(Key_Slash)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lv { +namespace minuskeydvorakprogr { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace minuskeydvorakprogr +} // namespace lv +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lv/modern/keymap.h b/src/kaleidoscope/host_keymap/linux/lv/modern/keymap.h new file mode 100644 index 0000000000..478dcb19f5 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lv/modern/keymap.h @@ -0,0 +1,547 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lv +// variant: modern + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_H)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_H)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Period) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsPound) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Period)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_Period)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Slash)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', RALT(Key_R)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_D)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_T)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_U)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_A)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_N)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_P)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_Comma)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_K)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_Y)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_G)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_O)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Quote)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_F)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_W)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_Semicolon)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_J)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_L)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_S)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_B)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_Z)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_M)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_X)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_D) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_T) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_U) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_A) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_N) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_P) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_Comma) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_K) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_Y) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_G) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_O) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Quote) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_F) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_W) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_NonUsBackslashAndPipe) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_Semicolon) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_J) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_L) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_S) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_B) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_Z) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_M) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_X) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_V)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_H)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_H)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Period) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsPound) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Period)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_Period)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Slash)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', RALT(Key_R)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_D)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_T)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_U)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_A)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_N)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_P)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_Comma)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_K)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_Y)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_G)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_O)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Quote)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_F)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_W)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_Semicolon)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_J)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_L)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_S)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_B)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_Z)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_M)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_X)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_D) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_T) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_U) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_A) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_N) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_P) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_Comma) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_K) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_Y) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_G) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_O) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Quote) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_F) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_W) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_NonUsBackslashAndPipe) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_Semicolon) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_J) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_L) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_S) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_B) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_Z) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_M) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_X) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_V)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_Backtick))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_LeftBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Backtick)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'×', RALT(LSHIFT(Key_Period))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(LSHIFT(Key_Slash))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ā', LSHIFT(Key_E)) /* U+0100, XKB_KEY_Amacron, LATIN CAPITAL LETTER A WITH MACRON */ \ + OP(L'ā', Key_E) /* U+0101, XKB_KEY_amacron, LATIN SMALL LETTER A WITH MACRON */ \ + OP(L'Č', RALT(LSHIFT(Key_C))) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', RALT(Key_C)) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Ē', LSHIFT(Key_Q)) /* U+0112, XKB_KEY_Emacron, LATIN CAPITAL LETTER E WITH MACRON */ \ + OP(L'ē', Key_Q) /* U+0113, XKB_KEY_emacron, LATIN SMALL LETTER E WITH MACRON */ \ + OP(L'Ģ', RALT(LSHIFT(Key_P))) /* U+0122, XKB_KEY_Gcedilla, LATIN CAPITAL LETTER G WITH CEDILLA */ \ + OP(L'ģ', RALT(Key_P)) /* U+0123, XKB_KEY_gcedilla, LATIN SMALL LETTER G WITH CEDILLA */ \ + OP(L'Ī', LSHIFT(Key_I)) /* U+012a, XKB_KEY_Imacron, LATIN CAPITAL LETTER I WITH MACRON */ \ + OP(L'ī', Key_I) /* U+012b, XKB_KEY_imacron, LATIN SMALL LETTER I WITH MACRON */ \ + OP(L'Ķ', RALT(LSHIFT(Key_G))) /* U+0136, XKB_KEY_Kcedilla, LATIN CAPITAL LETTER K WITH CEDILLA */ \ + OP(L'ķ', RALT(Key_G)) /* U+0137, XKB_KEY_kcedilla, LATIN SMALL LETTER K WITH CEDILLA */ \ + OP(L'Ļ', RALT(LSHIFT(Key_O))) /* U+013b, XKB_KEY_Lcedilla, LATIN CAPITAL LETTER L WITH CEDILLA */ \ + OP(L'ļ', RALT(Key_O)) /* U+013c, XKB_KEY_lcedilla, LATIN SMALL LETTER L WITH CEDILLA */ \ + OP(L'Ņ', RALT(LSHIFT(Key_F))) /* U+0145, XKB_KEY_Ncedilla, LATIN CAPITAL LETTER N WITH CEDILLA */ \ + OP(L'ņ', RALT(Key_F)) /* U+0146, XKB_KEY_ncedilla, LATIN SMALL LETTER N WITH CEDILLA */ \ + OP(L'Ō', RALT(LSHIFT(Key_W))) /* U+014c, XKB_KEY_Omacron, LATIN CAPITAL LETTER O WITH MACRON */ \ + OP(L'ō', RALT(Key_W)) /* U+014d, XKB_KEY_omacron, LATIN SMALL LETTER O WITH MACRON */ \ + OP(L'Ŗ', RALT(LSHIFT(Key_Semicolon))) /* U+0156, XKB_KEY_Rcedilla, LATIN CAPITAL LETTER R WITH CEDILLA */ \ + OP(L'ŗ', RALT(Key_Semicolon)) /* U+0157, XKB_KEY_rcedilla, LATIN SMALL LETTER R WITH CEDILLA */ \ + OP(L'Š', RALT(LSHIFT(Key_J))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_J)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ū', RALT(LSHIFT(Key_S))) /* U+016a, XKB_KEY_Umacron, LATIN CAPITAL LETTER U WITH MACRON */ \ + OP(L'ū', RALT(Key_S)) /* U+016b, XKB_KEY_umacron, LATIN SMALL LETTER U WITH MACRON */ \ + OP(L'Ž', RALT(LSHIFT(Key_X))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_X)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'–', RALT(Key_Equals)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Y)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', RALT(LSHIFT(Key_LeftBracket))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_RightBracket))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'☹', RALT(LSHIFT(Key_Comma))) \ + OP(L'☺', RALT(Key_Comma)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_D)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Amacron, LSHIFT(Key_E)) \ + OP(XKB_KEY_B, LSHIFT(Key_T)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_U)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_A)) \ + OP(XKB_KEY_Emacron, LSHIFT(Key_Q)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_N)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_P)) \ + OP(XKB_KEY_Gcedilla, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_H, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_K)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Latch, Key_H) /* XKB_KEY_ISO_Level3_Latch */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Imacron, LSHIFT(Key_I)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_Y)) \ + OP(XKB_KEY_K, LSHIFT(Key_G)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Kcedilla, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_L, LSHIFT(Key_O)) \ + OP(XKB_KEY_Lcedilla, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_F)) \ + OP(XKB_KEY_Ncedilla, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_W)) \ + OP(XKB_KEY_Omacron, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_R, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Rcedilla, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_J)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_L)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_S)) \ + OP(XKB_KEY_Umacron, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_B)) \ + OP(XKB_KEY_X, LSHIFT(Key_Z)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_M)) \ + OP(XKB_KEY_Z, LSHIFT(Key_X)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_a, Key_D) \ + OP(XKB_KEY_acute, RALT(Key_Backtick)) \ + OP(XKB_KEY_amacron, Key_E) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_H)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_T) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_V)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_comma, Key_Period) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_d, Key_U) \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_A) \ + OP(XKB_KEY_emacron, Key_Q) \ + OP(XKB_KEY_emdash, RALT(Key_Y)) \ + OP(XKB_KEY_endash, RALT(Key_Equals)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_N) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_P) \ + OP(XKB_KEY_gcedilla, RALT(Key_P)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Slash)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_h, Key_Comma) \ + OP(XKB_KEY_i, Key_K) \ + OP(XKB_KEY_imacron, Key_I) \ + OP(XKB_KEY_j, Key_Y) \ + OP(XKB_KEY_k, Key_G) \ + OP(XKB_KEY_kcedilla, RALT(Key_G)) \ + OP(XKB_KEY_l, Key_O) \ + OP(XKB_KEY_lcedilla, RALT(Key_O)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_less, RALT(Key_Period)) \ + OP(XKB_KEY_m, Key_Quote) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_n, Key_F) \ + OP(XKB_KEY_ncedilla, RALT(Key_F)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_W) \ + OP(XKB_KEY_omacron, RALT(Key_W)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_question, RALT(Key_R)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_H)) \ + OP(XKB_KEY_r, Key_Semicolon) \ + OP(XKB_KEY_rcedilla, RALT(Key_Semicolon)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_s, Key_J) \ + OP(XKB_KEY_scaron, RALT(Key_J)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_NonUsPound) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_L) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_S) \ + OP(XKB_KEY_umacron, RALT(Key_S)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_B) \ + OP(XKB_KEY_x, Key_Z) \ + OP(XKB_KEY_y, Key_M) \ + OP(XKB_KEY_z, Key_X) \ + OP(XKB_KEY_zcaron, RALT(Key_X)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lv { +namespace modern { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace modern +} // namespace lv +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lv/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/lv/standard/keymap.h new file mode 100644 index 0000000000..db2f3ae160 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lv/standard/keymap.h @@ -0,0 +1,554 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lv +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_LeftBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Backtick)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ā', RALT(LSHIFT(Key_A))) /* U+0100, XKB_KEY_Amacron, LATIN CAPITAL LETTER A WITH MACRON */ \ + OP(L'ā', RALT(Key_A)) /* U+0101, XKB_KEY_amacron, LATIN SMALL LETTER A WITH MACRON */ \ + OP(L'Č', RALT(LSHIFT(Key_C))) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', RALT(Key_C)) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Ē', RALT(LSHIFT(Key_E))) /* U+0112, XKB_KEY_Emacron, LATIN CAPITAL LETTER E WITH MACRON */ \ + OP(L'ē', RALT(Key_E)) /* U+0113, XKB_KEY_emacron, LATIN SMALL LETTER E WITH MACRON */ \ + OP(L'Ģ', RALT(LSHIFT(Key_G))) /* U+0122, XKB_KEY_Gcedilla, LATIN CAPITAL LETTER G WITH CEDILLA */ \ + OP(L'ģ', RALT(Key_G)) /* U+0123, XKB_KEY_gcedilla, LATIN SMALL LETTER G WITH CEDILLA */ \ + OP(L'Ī', RALT(LSHIFT(Key_I))) /* U+012a, XKB_KEY_Imacron, LATIN CAPITAL LETTER I WITH MACRON */ \ + OP(L'ī', RALT(Key_I)) /* U+012b, XKB_KEY_imacron, LATIN SMALL LETTER I WITH MACRON */ \ + OP(L'Ķ', RALT(LSHIFT(Key_K))) /* U+0136, XKB_KEY_Kcedilla, LATIN CAPITAL LETTER K WITH CEDILLA */ \ + OP(L'ķ', RALT(Key_K)) /* U+0137, XKB_KEY_kcedilla, LATIN SMALL LETTER K WITH CEDILLA */ \ + OP(L'Ļ', RALT(LSHIFT(Key_L))) /* U+013b, XKB_KEY_Lcedilla, LATIN CAPITAL LETTER L WITH CEDILLA */ \ + OP(L'ļ', RALT(Key_L)) /* U+013c, XKB_KEY_lcedilla, LATIN SMALL LETTER L WITH CEDILLA */ \ + OP(L'Ņ', RALT(LSHIFT(Key_N))) /* U+0145, XKB_KEY_Ncedilla, LATIN CAPITAL LETTER N WITH CEDILLA */ \ + OP(L'ņ', RALT(Key_N)) /* U+0146, XKB_KEY_ncedilla, LATIN SMALL LETTER N WITH CEDILLA */ \ + OP(L'Ō', RALT(LSHIFT(Key_O))) /* U+014c, XKB_KEY_Omacron, LATIN CAPITAL LETTER O WITH MACRON */ \ + OP(L'ō', RALT(Key_O)) /* U+014d, XKB_KEY_omacron, LATIN SMALL LETTER O WITH MACRON */ \ + OP(L'Ŗ', RALT(LSHIFT(Key_R))) /* U+0156, XKB_KEY_Rcedilla, LATIN CAPITAL LETTER R WITH CEDILLA */ \ + OP(L'ŗ', RALT(Key_R)) /* U+0157, XKB_KEY_rcedilla, LATIN SMALL LETTER R WITH CEDILLA */ \ + OP(L'Š', RALT(LSHIFT(Key_S))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_S)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ū', RALT(LSHIFT(Key_U))) /* U+016a, XKB_KEY_Umacron, LATIN CAPITAL LETTER U WITH MACRON */ \ + OP(L'ū', RALT(Key_U)) /* U+016b, XKB_KEY_umacron, LATIN SMALL LETTER U WITH MACRON */ \ + OP(L'Ž', RALT(LSHIFT(Key_Z))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_Z)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_NonUsPound))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_Slash))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'–', RALT(Key_Equals)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Equals))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', RALT(Key_Quote)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_RightBracket))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_Quote))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Amacron, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Emacron, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gcedilla, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Imacron, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Kcedilla, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Lcedilla, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Ncedilla, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Omacron, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Rcedilla, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Umacron, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_acute, RALT(Key_Backtick)) \ + OP(XKB_KEY_amacron, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emacron, RALT(Key_E)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_endash, RALT(Key_Equals)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gcedilla, RALT(Key_G)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_imacron, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kcedilla, RALT(Key_K)) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_lcedilla, RALT(Key_L)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_Quote)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_ncedilla, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_omacron, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rcedilla, RALT(Key_R)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_umacron, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lv { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace lv +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lv/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/lv/sun_type6/keymap.h new file mode 100644 index 0000000000..6e03976621 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lv/sun_type6/keymap.h @@ -0,0 +1,554 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lv +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_LeftBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', RALT(Key_NonUsBackslashAndPipe)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Backtick)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ā', RALT(LSHIFT(Key_A))) /* U+0100, XKB_KEY_Amacron, LATIN CAPITAL LETTER A WITH MACRON */ \ + OP(L'ā', RALT(Key_A)) /* U+0101, XKB_KEY_amacron, LATIN SMALL LETTER A WITH MACRON */ \ + OP(L'Č', RALT(LSHIFT(Key_C))) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', RALT(Key_C)) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Ē', RALT(LSHIFT(Key_E))) /* U+0112, XKB_KEY_Emacron, LATIN CAPITAL LETTER E WITH MACRON */ \ + OP(L'ē', RALT(Key_E)) /* U+0113, XKB_KEY_emacron, LATIN SMALL LETTER E WITH MACRON */ \ + OP(L'Ģ', RALT(LSHIFT(Key_G))) /* U+0122, XKB_KEY_Gcedilla, LATIN CAPITAL LETTER G WITH CEDILLA */ \ + OP(L'ģ', RALT(Key_G)) /* U+0123, XKB_KEY_gcedilla, LATIN SMALL LETTER G WITH CEDILLA */ \ + OP(L'Ī', RALT(LSHIFT(Key_I))) /* U+012a, XKB_KEY_Imacron, LATIN CAPITAL LETTER I WITH MACRON */ \ + OP(L'ī', RALT(Key_I)) /* U+012b, XKB_KEY_imacron, LATIN SMALL LETTER I WITH MACRON */ \ + OP(L'Ķ', RALT(LSHIFT(Key_K))) /* U+0136, XKB_KEY_Kcedilla, LATIN CAPITAL LETTER K WITH CEDILLA */ \ + OP(L'ķ', RALT(Key_K)) /* U+0137, XKB_KEY_kcedilla, LATIN SMALL LETTER K WITH CEDILLA */ \ + OP(L'Ļ', RALT(LSHIFT(Key_L))) /* U+013b, XKB_KEY_Lcedilla, LATIN CAPITAL LETTER L WITH CEDILLA */ \ + OP(L'ļ', RALT(Key_L)) /* U+013c, XKB_KEY_lcedilla, LATIN SMALL LETTER L WITH CEDILLA */ \ + OP(L'Ņ', RALT(LSHIFT(Key_N))) /* U+0145, XKB_KEY_Ncedilla, LATIN CAPITAL LETTER N WITH CEDILLA */ \ + OP(L'ņ', RALT(Key_N)) /* U+0146, XKB_KEY_ncedilla, LATIN SMALL LETTER N WITH CEDILLA */ \ + OP(L'Ō', RALT(LSHIFT(Key_O))) /* U+014c, XKB_KEY_Omacron, LATIN CAPITAL LETTER O WITH MACRON */ \ + OP(L'ō', RALT(Key_O)) /* U+014d, XKB_KEY_omacron, LATIN SMALL LETTER O WITH MACRON */ \ + OP(L'Ŗ', RALT(LSHIFT(Key_R))) /* U+0156, XKB_KEY_Rcedilla, LATIN CAPITAL LETTER R WITH CEDILLA */ \ + OP(L'ŗ', RALT(Key_R)) /* U+0157, XKB_KEY_rcedilla, LATIN SMALL LETTER R WITH CEDILLA */ \ + OP(L'Š', RALT(LSHIFT(Key_S))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_S)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ū', RALT(LSHIFT(Key_U))) /* U+016a, XKB_KEY_Umacron, LATIN CAPITAL LETTER U WITH MACRON */ \ + OP(L'ū', RALT(Key_U)) /* U+016b, XKB_KEY_umacron, LATIN SMALL LETTER U WITH MACRON */ \ + OP(L'Ž', RALT(LSHIFT(Key_Z))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_Z)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_NonUsPound))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_Slash))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'–', RALT(Key_Equals)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Equals))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', RALT(Key_Quote)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_RightBracket))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_Quote))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Amacron, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Emacron, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gcedilla, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Imacron, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Kcedilla, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Lcedilla, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Ncedilla, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Omacron, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Rcedilla, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Umacron, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_acute, RALT(Key_Backtick)) \ + OP(XKB_KEY_amacron, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_degree, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emacron, RALT(Key_E)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_endash, RALT(Key_Equals)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gcedilla, RALT(Key_G)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_imacron, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kcedilla, RALT(Key_K)) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_lcedilla, RALT(Key_L)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_Quote)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_ncedilla, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_omacron, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rcedilla, RALT(Key_R)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_umacron, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lv { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace lv +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lv/tilde/keymap.h b/src/kaleidoscope/host_keymap/linux/lv/tilde/keymap.h new file mode 100644 index 0000000000..3d55b5b186 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lv/tilde/keymap.h @@ -0,0 +1,555 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lv +// variant: tilde + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_LeftBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(LSHIFT(Key_Backtick))) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ā', RALT(LSHIFT(Key_A))) /* U+0100, XKB_KEY_Amacron, LATIN CAPITAL LETTER A WITH MACRON */ \ + OP(L'ā', RALT(Key_A)) /* U+0101, XKB_KEY_amacron, LATIN SMALL LETTER A WITH MACRON */ \ + OP(L'Č', RALT(LSHIFT(Key_C))) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', RALT(Key_C)) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Ē', RALT(LSHIFT(Key_E))) /* U+0112, XKB_KEY_Emacron, LATIN CAPITAL LETTER E WITH MACRON */ \ + OP(L'ē', RALT(Key_E)) /* U+0113, XKB_KEY_emacron, LATIN SMALL LETTER E WITH MACRON */ \ + OP(L'Ģ', RALT(LSHIFT(Key_G))) /* U+0122, XKB_KEY_Gcedilla, LATIN CAPITAL LETTER G WITH CEDILLA */ \ + OP(L'ģ', RALT(Key_G)) /* U+0123, XKB_KEY_gcedilla, LATIN SMALL LETTER G WITH CEDILLA */ \ + OP(L'Ī', RALT(LSHIFT(Key_I))) /* U+012a, XKB_KEY_Imacron, LATIN CAPITAL LETTER I WITH MACRON */ \ + OP(L'ī', RALT(Key_I)) /* U+012b, XKB_KEY_imacron, LATIN SMALL LETTER I WITH MACRON */ \ + OP(L'Ķ', RALT(LSHIFT(Key_K))) /* U+0136, XKB_KEY_Kcedilla, LATIN CAPITAL LETTER K WITH CEDILLA */ \ + OP(L'ķ', RALT(Key_K)) /* U+0137, XKB_KEY_kcedilla, LATIN SMALL LETTER K WITH CEDILLA */ \ + OP(L'Ļ', RALT(LSHIFT(Key_L))) /* U+013b, XKB_KEY_Lcedilla, LATIN CAPITAL LETTER L WITH CEDILLA */ \ + OP(L'ļ', RALT(Key_L)) /* U+013c, XKB_KEY_lcedilla, LATIN SMALL LETTER L WITH CEDILLA */ \ + OP(L'Ņ', RALT(LSHIFT(Key_N))) /* U+0145, XKB_KEY_Ncedilla, LATIN CAPITAL LETTER N WITH CEDILLA */ \ + OP(L'ņ', RALT(Key_N)) /* U+0146, XKB_KEY_ncedilla, LATIN SMALL LETTER N WITH CEDILLA */ \ + OP(L'Ō', RALT(LSHIFT(Key_O))) /* U+014c, XKB_KEY_Omacron, LATIN CAPITAL LETTER O WITH MACRON */ \ + OP(L'ō', RALT(Key_O)) /* U+014d, XKB_KEY_omacron, LATIN SMALL LETTER O WITH MACRON */ \ + OP(L'Ŗ', RALT(LSHIFT(Key_R))) /* U+0156, XKB_KEY_Rcedilla, LATIN CAPITAL LETTER R WITH CEDILLA */ \ + OP(L'ŗ', RALT(Key_R)) /* U+0157, XKB_KEY_rcedilla, LATIN SMALL LETTER R WITH CEDILLA */ \ + OP(L'Š', RALT(LSHIFT(Key_S))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_S)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ū', RALT(LSHIFT(Key_U))) /* U+016a, XKB_KEY_Umacron, LATIN CAPITAL LETTER U WITH MACRON */ \ + OP(L'ū', RALT(Key_U)) /* U+016b, XKB_KEY_umacron, LATIN SMALL LETTER U WITH MACRON */ \ + OP(L'Ž', RALT(LSHIFT(Key_Z))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_Z)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_NonUsPound))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_Slash))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'–', RALT(Key_Equals)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Equals))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', RALT(Key_Quote)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_RightBracket))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_Quote))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Amacron, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Emacron, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gcedilla, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Latch, Key_Backtick) /* XKB_KEY_ISO_Level3_Latch */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Imacron, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Kcedilla, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Lcedilla, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Ncedilla, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Omacron, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Rcedilla, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Umacron, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_acute, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_amacron, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emacron, RALT(Key_E)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_endash, RALT(Key_Equals)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gcedilla, RALT(Key_G)) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_imacron, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kcedilla, RALT(Key_K)) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_lcedilla, RALT(Key_L)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_Quote)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_ncedilla, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_omacron, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rcedilla, RALT(Key_R)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_umacron, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lv { +namespace tilde { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace tilde +} // namespace lv +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lv/ykeydvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/lv/ykeydvorak/keymap.h new file mode 100644 index 0000000000..053895e2f6 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lv/ykeydvorak/keymap.h @@ -0,0 +1,551 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lv +// variant: ykeydvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', RALT(LSHIFT(Key_T))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', RALT(Key_T)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', Key_Backtick) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', RALT(LSHIFT(Key_T))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', RALT(Key_T)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', Key_Backtick) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_W)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Backtick)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_E)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Quote))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'×', RALT(LSHIFT(Key_W))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(LSHIFT(Key_E))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ā', RALT(LSHIFT(Key_A))) /* U+0100, XKB_KEY_Amacron, LATIN CAPITAL LETTER A WITH MACRON */ \ + OP(L'ā', RALT(Key_A)) /* U+0101, XKB_KEY_amacron, LATIN SMALL LETTER A WITH MACRON */ \ + OP(L'Č', RALT(LSHIFT(Key_I))) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', RALT(Key_I)) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Ē', RALT(LSHIFT(Key_D))) /* U+0112, XKB_KEY_Emacron, LATIN CAPITAL LETTER E WITH MACRON */ \ + OP(L'ē', RALT(Key_D)) /* U+0113, XKB_KEY_emacron, LATIN SMALL LETTER E WITH MACRON */ \ + OP(L'Ģ', RALT(LSHIFT(Key_U))) /* U+0122, XKB_KEY_Gcedilla, LATIN CAPITAL LETTER G WITH CEDILLA */ \ + OP(L'ģ', RALT(Key_U)) /* U+0123, XKB_KEY_gcedilla, LATIN SMALL LETTER G WITH CEDILLA */ \ + OP(L'Ī', RALT(LSHIFT(Key_G))) /* U+012a, XKB_KEY_Imacron, LATIN CAPITAL LETTER I WITH MACRON */ \ + OP(L'ī', RALT(Key_G)) /* U+012b, XKB_KEY_imacron, LATIN SMALL LETTER I WITH MACRON */ \ + OP(L'Ķ', RALT(LSHIFT(Key_V))) /* U+0136, XKB_KEY_Kcedilla, LATIN CAPITAL LETTER K WITH CEDILLA */ \ + OP(L'ķ', RALT(Key_V)) /* U+0137, XKB_KEY_kcedilla, LATIN SMALL LETTER K WITH CEDILLA */ \ + OP(L'Ļ', RALT(LSHIFT(Key_P))) /* U+013b, XKB_KEY_Lcedilla, LATIN CAPITAL LETTER L WITH CEDILLA */ \ + OP(L'ļ', RALT(Key_P)) /* U+013c, XKB_KEY_lcedilla, LATIN SMALL LETTER L WITH CEDILLA */ \ + OP(L'Ņ', RALT(LSHIFT(Key_L))) /* U+0145, XKB_KEY_Ncedilla, LATIN CAPITAL LETTER N WITH CEDILLA */ \ + OP(L'ņ', RALT(Key_L)) /* U+0146, XKB_KEY_ncedilla, LATIN SMALL LETTER N WITH CEDILLA */ \ + OP(L'Ō', RALT(LSHIFT(Key_S))) /* U+014c, XKB_KEY_Omacron, LATIN CAPITAL LETTER O WITH MACRON */ \ + OP(L'ō', RALT(Key_S)) /* U+014d, XKB_KEY_omacron, LATIN SMALL LETTER O WITH MACRON */ \ + OP(L'Ŗ', RALT(LSHIFT(Key_O))) /* U+0156, XKB_KEY_Rcedilla, LATIN CAPITAL LETTER R WITH CEDILLA */ \ + OP(L'ŗ', RALT(Key_O)) /* U+0157, XKB_KEY_rcedilla, LATIN SMALL LETTER R WITH CEDILLA */ \ + OP(L'Š', RALT(LSHIFT(Key_Semicolon))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_Semicolon)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ū', RALT(LSHIFT(Key_F))) /* U+016a, XKB_KEY_Umacron, LATIN CAPITAL LETTER U WITH MACRON */ \ + OP(L'ū', RALT(Key_F)) /* U+016b, XKB_KEY_umacron, LATIN SMALL LETTER U WITH MACRON */ \ + OP(L'Ž', RALT(LSHIFT(Key_Slash))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_Slash)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_NonUsPound))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_LeftBracket))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'–', RALT(Key_RightBracket)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_RightBracket))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', RALT(Key_Minus)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_Equals)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_Q))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Amacron, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_Emacron, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_Gcedilla, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Latch, Key_T) /* XKB_KEY_ISO_Level3_Latch */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Imacron, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Kcedilla, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Lcedilla, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Ncedilla, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_Omacron, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Rcedilla, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Umacron, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_acute, RALT(Key_Backtick)) \ + OP(XKB_KEY_amacron, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Q) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, Key_Backtick) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_Minus) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_ccaron, RALT(Key_I)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Z)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_emacron, RALT(Key_D)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_endash, RALT(Key_RightBracket)) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_gcedilla, RALT(Key_U)) \ + OP(XKB_KEY_grave, LSHIFT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_W)) \ + OP(XKB_KEY_guillemotright, RALT(Key_E)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_imacron, RALT(Key_G)) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_kcedilla, RALT(Key_V)) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_lcedilla, RALT(Key_P)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_Minus)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_ncedilla, RALT(Key_L)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_omacron, RALT(Key_S)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_plus, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Q)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_rcedilla, RALT(Key_O)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_Equals)) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_scaron, RALT(Key_Semicolon)) \ + OP(XKB_KEY_semicolon, Key_Z) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_umacron, RALT(Key_F)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, RALT(Key_T)) \ + OP(XKB_KEY_z, Key_Slash) \ + OP(XKB_KEY_zcaron, RALT(Key_Slash)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lv { +namespace ykeydvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ykeydvorak +} // namespace lv +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/lv/ykeydvorakprogr/keymap.h b/src/kaleidoscope/host_keymap/linux/lv/ykeydvorakprogr/keymap.h new file mode 100644 index 0000000000..a1099ff3b0 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/lv/ykeydvorakprogr/keymap.h @@ -0,0 +1,553 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: lv +// variant: ykeydvorakprogr + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Minus) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Z)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_Equals) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_Backtick) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_1)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Z) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_8) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_7) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_9) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_7)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_5)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_8)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_4)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_9)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_3)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_0)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_2)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_Minus)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_6)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Q) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_6) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_RightBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', RALT(LSHIFT(Key_T))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_2) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_0) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', RALT(Key_T)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', Key_3) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', Key_4) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Minus) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Z)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_Equals) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_Backtick) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_1)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Z) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_8) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_7) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_9) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_7)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_5)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_8)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_4)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_9)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_3)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_0)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_2)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_Minus)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_6)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Q) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_6) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_RightBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', RALT(LSHIFT(Key_T))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_2) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_0) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', RALT(Key_T)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', Key_3) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', Key_4) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_Minus))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_Backtick))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_9))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_7))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_3)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(Key_0)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_7)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_9)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'´', RALT(Key_1)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¹', RALT(Key_2)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_4)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Quote))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'×', RALT(LSHIFT(Key_W))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(LSHIFT(Key_E))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ā', RALT(LSHIFT(Key_A))) /* U+0100, XKB_KEY_Amacron, LATIN CAPITAL LETTER A WITH MACRON */ \ + OP(L'ā', RALT(Key_A)) /* U+0101, XKB_KEY_amacron, LATIN SMALL LETTER A WITH MACRON */ \ + OP(L'Č', RALT(LSHIFT(Key_I))) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', RALT(Key_I)) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Ē', RALT(LSHIFT(Key_D))) /* U+0112, XKB_KEY_Emacron, LATIN CAPITAL LETTER E WITH MACRON */ \ + OP(L'ē', RALT(Key_D)) /* U+0113, XKB_KEY_emacron, LATIN SMALL LETTER E WITH MACRON */ \ + OP(L'Ģ', RALT(LSHIFT(Key_U))) /* U+0122, XKB_KEY_Gcedilla, LATIN CAPITAL LETTER G WITH CEDILLA */ \ + OP(L'ģ', RALT(Key_U)) /* U+0123, XKB_KEY_gcedilla, LATIN SMALL LETTER G WITH CEDILLA */ \ + OP(L'Ī', RALT(LSHIFT(Key_G))) /* U+012a, XKB_KEY_Imacron, LATIN CAPITAL LETTER I WITH MACRON */ \ + OP(L'ī', RALT(Key_G)) /* U+012b, XKB_KEY_imacron, LATIN SMALL LETTER I WITH MACRON */ \ + OP(L'Ķ', RALT(LSHIFT(Key_V))) /* U+0136, XKB_KEY_Kcedilla, LATIN CAPITAL LETTER K WITH CEDILLA */ \ + OP(L'ķ', RALT(Key_V)) /* U+0137, XKB_KEY_kcedilla, LATIN SMALL LETTER K WITH CEDILLA */ \ + OP(L'Ļ', RALT(LSHIFT(Key_P))) /* U+013b, XKB_KEY_Lcedilla, LATIN CAPITAL LETTER L WITH CEDILLA */ \ + OP(L'ļ', RALT(Key_P)) /* U+013c, XKB_KEY_lcedilla, LATIN SMALL LETTER L WITH CEDILLA */ \ + OP(L'Ņ', RALT(LSHIFT(Key_L))) /* U+0145, XKB_KEY_Ncedilla, LATIN CAPITAL LETTER N WITH CEDILLA */ \ + OP(L'ņ', RALT(Key_L)) /* U+0146, XKB_KEY_ncedilla, LATIN SMALL LETTER N WITH CEDILLA */ \ + OP(L'Ō', RALT(LSHIFT(Key_S))) /* U+014c, XKB_KEY_Omacron, LATIN CAPITAL LETTER O WITH MACRON */ \ + OP(L'ō', RALT(Key_S)) /* U+014d, XKB_KEY_omacron, LATIN SMALL LETTER O WITH MACRON */ \ + OP(L'Ŗ', RALT(LSHIFT(Key_O))) /* U+0156, XKB_KEY_Rcedilla, LATIN CAPITAL LETTER R WITH CEDILLA */ \ + OP(L'ŗ', RALT(Key_O)) /* U+0157, XKB_KEY_rcedilla, LATIN SMALL LETTER R WITH CEDILLA */ \ + OP(L'Š', RALT(LSHIFT(Key_Semicolon))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_Semicolon)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ū', RALT(LSHIFT(Key_F))) /* U+016a, XKB_KEY_Umacron, LATIN CAPITAL LETTER U WITH MACRON */ \ + OP(L'ū', RALT(Key_F)) /* U+016b, XKB_KEY_umacron, LATIN SMALL LETTER U WITH MACRON */ \ + OP(L'Ž', RALT(LSHIFT(Key_Slash))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_Slash)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_NonUsPound))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_LeftBracket))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'α', RALT(Key_Equals)) /* U+03b1, XKB_KEY_Greek_alpha, GREEK SMALL LETTER ALPHA */ \ + OP(L'β', RALT(LSHIFT(Key_Equals))) /* U+03b2, XKB_KEY_Greek_beta, GREEK SMALL LETTER BETA */ \ + OP(L'–', RALT(Key_8)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_8))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', RALT(Key_Z)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_4))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_Z))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_Backtick)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_0))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_7)) \ + OP(XKB_KEY_1, LSHIFT(Key_5)) \ + OP(XKB_KEY_2, LSHIFT(Key_8)) \ + OP(XKB_KEY_3, LSHIFT(Key_4)) \ + OP(XKB_KEY_4, LSHIFT(Key_9)) \ + OP(XKB_KEY_5, LSHIFT(Key_3)) \ + OP(XKB_KEY_6, LSHIFT(Key_0)) \ + OP(XKB_KEY_7, LSHIFT(Key_2)) \ + OP(XKB_KEY_8, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_9, LSHIFT(Key_6)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Amacron, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_Emacron, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_Backtick)) \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_Gcedilla, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Greek_alpha, RALT(Key_Equals)) \ + OP(XKB_KEY_Greek_beta, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Latch, Key_T) /* XKB_KEY_ISO_Level3_Latch */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Imacron, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Kcedilla, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Lcedilla, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Ncedilla, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_Omacron, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Rcedilla, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Umacron, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_acute, RALT(Key_1)) \ + OP(XKB_KEY_amacron, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_Z) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, Key_7) \ + OP(XKB_KEY_at, Key_RightBracket) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, Key_3) \ + OP(XKB_KEY_braceright, Key_4) \ + OP(XKB_KEY_bracketleft, Key_2) \ + OP(XKB_KEY_bracketright, Key_0) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_ccaron, RALT(Key_I)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Q)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_degree, RALT(Key_7)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_dollar, Key_Backtick) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_emacron, RALT(Key_D)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_endash, RALT(Key_8)) \ + OP(XKB_KEY_equal, Key_6) \ + OP(XKB_KEY_exclam, Key_Minus) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_gcedilla, RALT(Key_U)) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_3)) \ + OP(XKB_KEY_guillemotright, RALT(Key_4)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_imacron, RALT(Key_G)) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_kcedilla, RALT(Key_V)) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_lcedilla, RALT(Key_P)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_ncedilla, RALT(Key_L)) \ + OP(XKB_KEY_numbersign, Key_Equals) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_omacron, RALT(Key_S)) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_2)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_8) \ + OP(XKB_KEY_percent, LSHIFT(Key_1)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_plus, Key_9) \ + OP(XKB_KEY_plusminus, RALT(Key_9)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Z)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_rcedilla, RALT(Key_O)) \ + OP(XKB_KEY_registered, RALT(Key_0)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_scaron, RALT(Key_Semicolon)) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_semicolon, Key_Q) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_umacron, RALT(Key_F)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, RALT(Key_T)) \ + OP(XKB_KEY_z, Key_Slash) \ + OP(XKB_KEY_zcaron, RALT(Key_Slash)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace lv { +namespace ykeydvorakprogr { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ykeydvorakprogr +} // namespace lv +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ma/french/keymap.h b/src/kaleidoscope/host_keymap/linux/ma/french/keymap.h new file mode 100644 index 0000000000..db4de44255 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ma/french/keymap.h @@ -0,0 +1,582 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ma +// variant: french + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_RightBracket)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_W)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'µ', RALT(Key_Semicolon)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_Semicolon))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_Q))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'æ', RALT(Key_Q)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_A))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_ae, RALT(Key_Q)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_RightBracket)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_M)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_M))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_W)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, RALT(Key_Semicolon)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, Key_8) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ma { +namespace french { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace french +} // namespace ma +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ma/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/ma/standard/keymap.h new file mode 100644 index 0000000000..41014b3bfe --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ma/standard/keymap.h @@ -0,0 +1,443 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ma +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', LSHIFT(Key_O)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'÷', LSHIFT(Key_I)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'؉', RALT(LSHIFT(Key_Backtick))) \ + OP(L'،', LSHIFT(Key_K)) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', LSHIFT(Key_P)) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؜', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', Key_X) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'آ', LSHIFT(Key_N)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_H)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', Key_C) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_Y)) /* U+0625, XKB_KEY_Arabic_hamzaunderalef, ARABIC LETTER ALEF WITH HAMZA BELOW */ \ + OP(L'ئ', Key_Z) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', Key_H) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_F) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', Key_M) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_J) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', Key_E) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_LeftBracket) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', Key_P) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_O) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_RightBracket) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', Key_Backtick) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_V) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_Period) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', Key_A) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', Key_W) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', Key_Q) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', Key_Quote) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', Key_Slash) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', Key_U) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', Key_Y) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_J)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'ف', Key_T) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_R) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', Key_Semicolon) /* U+0643, XKB_KEY_Arabic_kaf, ARABIC LETTER KAF */ \ + OP(L'ل', Key_G) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_L) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_K) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_I) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_Comma) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', Key_N) /* U+0649, XKB_KEY_Arabic_alefmaksura, ARABIC LETTER ALEF MAKSURA */ \ + OP(L'ي', Key_D) /* U+064a, XKB_KEY_Arabic_yeh, ARABIC LETTER YEH */ \ + OP(L'ً', LSHIFT(Key_W)) /* U+064b, XKB_KEY_Arabic_fathatan, ARABIC FATHATAN */ \ + OP(L'ٌ', LSHIFT(Key_R)) /* U+064c, XKB_KEY_Arabic_dammatan, ARABIC DAMMATAN */ \ + OP(L'ٍ', LSHIFT(Key_S)) /* U+064d, XKB_KEY_Arabic_kasratan, ARABIC KASRATAN */ \ + OP(L'َ', LSHIFT(Key_Q)) /* U+064e, XKB_KEY_Arabic_fatha, ARABIC FATHA */ \ + OP(L'ُ', LSHIFT(Key_E)) /* U+064f, XKB_KEY_Arabic_damma, ARABIC DAMMA */ \ + OP(L'ِ', LSHIFT(Key_A)) /* U+0650, XKB_KEY_Arabic_kasra, ARABIC KASRA */ \ + OP(L'ّ', LSHIFT(Key_Backtick)) /* U+0651, XKB_KEY_Arabic_shadda, ARABIC SHADDA */ \ + OP(L'ْ', LSHIFT(Key_X)) /* U+0652, XKB_KEY_Arabic_sukun, ARABIC SUKUN */ \ + OP(L'٠', RALT(Key_0)) /* U+0660, XKB_KEY_Arabic_0, ARABIC-INDIC DIGIT ZERO */ \ + OP(L'١', RALT(Key_1)) /* U+0661, XKB_KEY_Arabic_1, ARABIC-INDIC DIGIT ONE */ \ + OP(L'٢', RALT(Key_2)) /* U+0662, XKB_KEY_Arabic_2, ARABIC-INDIC DIGIT TWO */ \ + OP(L'٣', RALT(Key_3)) /* U+0663, XKB_KEY_Arabic_3, ARABIC-INDIC DIGIT THREE */ \ + OP(L'٤', RALT(Key_4)) /* U+0664, XKB_KEY_Arabic_4, ARABIC-INDIC DIGIT FOUR */ \ + OP(L'٥', RALT(Key_5)) /* U+0665, XKB_KEY_Arabic_5, ARABIC-INDIC DIGIT FIVE */ \ + OP(L'٦', RALT(Key_6)) /* U+0666, XKB_KEY_Arabic_6, ARABIC-INDIC DIGIT SIX */ \ + OP(L'٧', RALT(Key_7)) /* U+0667, XKB_KEY_Arabic_7, ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'٨', RALT(Key_8)) /* U+0668, XKB_KEY_Arabic_8, ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'٩', RALT(Key_9)) /* U+0669, XKB_KEY_Arabic_9, ARABIC-INDIC DIGIT NINE */ \ + OP(L'٪', RALT(Key_Backtick)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', RALT(Key_K)) \ + OP(L'٬', RALT(Key_Comma)) \ + OP(L'٭', RALT(Key_Slash)) \ + OP(L'ٰ', RALT(Key_N)) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٱ', RALT(Key_H)) \ + OP(L'پ', RALT(Key_F)) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', RALT(Key_LeftBracket)) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ژ', RALT(Key_Period)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ڤ', RALT(Key_T)) /* U+06a4, XKB_KEY_Arabic_veh, ARABIC LETTER VEH */ \ + OP(L'گ', RALT(Key_Semicolon)) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'‌', RALT(LSHIFT(Key_Slash))) \ + OP(L'‍', RALT(LSHIFT(Key_Quote))) \ + OP(L'‎', RALT(LSHIFT(Key_P))) \ + OP(L'‏', RALT(LSHIFT(Key_LeftBracket))) \ + OP(L'‑', RALT(LSHIFT(Key_Minus))) \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'…', LSHIFT(Key_NonUsPound)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‪', RALT(LSHIFT(Key_Y))) \ + OP(L'‫', RALT(LSHIFT(Key_U))) \ + OP(L'‬', RALT(LSHIFT(Key_I))) \ + OP(L' ', RALT(LSHIFT(Key_NonUsPound))) \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'⁦', RALT(LSHIFT(Key_Q))) \ + OP(L'⁧', RALT(LSHIFT(Key_W))) \ + OP(L'⁨', RALT(LSHIFT(Key_E))) \ + OP(L'⁩', RALT(LSHIFT(Key_R))) \ + OP(L'≈', RALT(LSHIFT(Key_Equals))) /* U+2248, XKB_KEY_approxeq, ALMOST EQUAL TO */ \ + OP(L'≠', RALT(Key_Equals)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'⟨', RALT(Key_NonUsPound)) \ + OP(L'⟩', RALT(Key_Quote)) \ + OP(L'ﻵ', LSHIFT(Key_B)) \ + OP(L'ﻷ', LSHIFT(Key_G)) \ + OP(L'ﻹ', LSHIFT(Key_T)) \ + OP(L'ﻻ', Key_B) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_0, RALT(Key_0)) \ + OP(XKB_KEY_Arabic_1, RALT(Key_1)) \ + OP(XKB_KEY_Arabic_2, RALT(Key_2)) \ + OP(XKB_KEY_Arabic_3, RALT(Key_3)) \ + OP(XKB_KEY_Arabic_4, RALT(Key_4)) \ + OP(XKB_KEY_Arabic_5, RALT(Key_5)) \ + OP(XKB_KEY_Arabic_6, RALT(Key_6)) \ + OP(XKB_KEY_Arabic_7, RALT(Key_7)) \ + OP(XKB_KEY_Arabic_8, RALT(Key_8)) \ + OP(XKB_KEY_Arabic_9, RALT(Key_9)) \ + OP(XKB_KEY_Arabic_ain, Key_U) \ + OP(XKB_KEY_Arabic_alef, Key_H) \ + OP(XKB_KEY_Arabic_alefmaksura, Key_N) \ + OP(XKB_KEY_Arabic_beh, Key_F) \ + OP(XKB_KEY_Arabic_comma, LSHIFT(Key_K)) \ + OP(XKB_KEY_Arabic_dad, Key_Q) \ + OP(XKB_KEY_Arabic_dal, Key_RightBracket) \ + OP(XKB_KEY_Arabic_damma, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_dammatan, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_fatha, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Arabic_fathatan, LSHIFT(Key_W)) \ + OP(XKB_KEY_Arabic_feh, Key_T) \ + OP(XKB_KEY_Arabic_gaf, RALT(Key_Semicolon)) \ + OP(XKB_KEY_Arabic_ghain, Key_Y) \ + OP(XKB_KEY_Arabic_ha, Key_I) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, Key_P) \ + OP(XKB_KEY_Arabic_hamza, Key_X) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, Key_C) \ + OP(XKB_KEY_Arabic_hamzaonyeh, Key_Z) \ + OP(XKB_KEY_Arabic_hamzaunderalef, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Arabic_jeem, Key_LeftBracket) \ + OP(XKB_KEY_Arabic_jeh, RALT(Key_Period)) \ + OP(XKB_KEY_Arabic_kaf, Key_Semicolon) \ + OP(XKB_KEY_Arabic_kasra, LSHIFT(Key_A)) \ + OP(XKB_KEY_Arabic_kasratan, LSHIFT(Key_S)) \ + OP(XKB_KEY_Arabic_khah, Key_O) \ + OP(XKB_KEY_Arabic_lam, Key_G) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_meem, Key_L) \ + OP(XKB_KEY_Arabic_noon, Key_K) \ + OP(XKB_KEY_Arabic_peh, RALT(Key_F)) \ + OP(XKB_KEY_Arabic_percent, RALT(Key_Backtick)) \ + OP(XKB_KEY_Arabic_qaf, Key_R) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_V) \ + OP(XKB_KEY_Arabic_sad, Key_W) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, LSHIFT(Key_P)) \ + OP(XKB_KEY_Arabic_shadda, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Arabic_sheen, Key_A) \ + OP(XKB_KEY_Arabic_sukun, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_superscript_alef, RALT(Key_N)) \ + OP(XKB_KEY_Arabic_tah, Key_Quote) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_J)) \ + OP(XKB_KEY_Arabic_tcheh, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_Arabic_teh, Key_J) \ + OP(XKB_KEY_Arabic_tehmarbuta, Key_M) \ + OP(XKB_KEY_Arabic_thal, Key_Backtick) \ + OP(XKB_KEY_Arabic_theh, Key_E) \ + OP(XKB_KEY_Arabic_veh, RALT(Key_T)) \ + OP(XKB_KEY_Arabic_waw, Key_Comma) \ + OP(XKB_KEY_Arabic_yeh, Key_D) \ + OP(XKB_KEY_Arabic_zah, Key_Slash) \ + OP(XKB_KEY_Arabic_zain, Key_Period) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_approxeq, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Z)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_V)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_C)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_F)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_D)) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, LSHIFT(Key_I)) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_ellipsis, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_grave, LSHIFT(Key_U)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_less, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_multiply, LSHIFT(Key_O)) \ + OP(XKB_KEY_notequal, RALT(Key_Equals)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_period, LSHIFT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_slash, LSHIFT(Key_L)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, Key_8) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ma { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace ma +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ma/tifinagh-alt-phonetic/keymap.h b/src/kaleidoscope/host_keymap/linux/ma/tifinagh-alt-phonetic/keymap.h new file mode 100644 index 0000000000..a726ad7293 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ma/tifinagh-alt-phonetic/keymap.h @@ -0,0 +1,347 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ma +// variant: tifinagh-alt-phonetic + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', Key_Quote) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_0) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_9) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_7) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', Key_2) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', Key_Quote) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_0) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_9) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_7) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', Key_2) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'µ', LSHIFT(Key_NonUsPound)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'ⴰ', Key_A) \ + OP(L'ⴱ', Key_B) \ + OP(L'ⴲ', RALT(Key_B)) \ + OP(L'ⴳ', Key_G) \ + OP(L'ⴴ', RALT(Key_G)) \ + OP(L'ⴵ', RALT(LSHIFT(Key_G))) \ + OP(L'ⴶ', LSHIFT(Key_G)) \ + OP(L'ⴷ', Key_D) \ + OP(L'ⴸ', RALT(Key_D)) \ + OP(L'ⴹ', LSHIFT(Key_D)) \ + OP(L'ⴺ', RALT(LSHIFT(Key_D))) \ + OP(L'ⴻ', Key_E) \ + OP(L'ⴼ', Key_F) \ + OP(L'ⴽ', Key_K) \ + OP(L'ⴾ', LSHIFT(Key_K)) \ + OP(L'ⴿ', RALT(Key_K)) \ + OP(L'ⵀ', Key_H) \ + OP(L'ⵁ', RALT(Key_H)) \ + OP(L'ⵂ', LSHIFT(Key_H)) \ + OP(L'ⵃ', Key_P) \ + OP(L'ⵄ', Key_O) \ + OP(L'ⵅ', Key_X) \ + OP(L'ⵆ', LSHIFT(Key_X)) \ + OP(L'ⵇ', Key_Q) \ + OP(L'ⵈ', LSHIFT(Key_Q)) \ + OP(L'ⵉ', Key_I) \ + OP(L'ⵊ', Key_J) \ + OP(L'ⵋ', RALT(Key_J)) \ + OP(L'ⵌ', LSHIFT(Key_J)) \ + OP(L'ⵍ', Key_L) \ + OP(L'ⵎ', Key_Semicolon) \ + OP(L'ⵏ', Key_N) \ + OP(L'ⵐ', LSHIFT(Key_N)) \ + OP(L'ⵑ', RALT(Key_N)) \ + OP(L'ⵒ', LSHIFT(Key_P)) \ + OP(L'ⵓ', Key_U) \ + OP(L'ⵔ', Key_R) \ + OP(L'ⵕ', LSHIFT(Key_R)) \ + OP(L'ⵖ', Key_V) \ + OP(L'ⵗ', LSHIFT(Key_V)) \ + OP(L'ⵘ', RALT(Key_V)) \ + OP(L'ⵙ', Key_S) \ + OP(L'ⵚ', LSHIFT(Key_S)) \ + OP(L'ⵛ', Key_C) \ + OP(L'ⵜ', Key_T) \ + OP(L'ⵝ', RALT(Key_T)) \ + OP(L'ⵞ', LSHIFT(Key_C)) \ + OP(L'ⵟ', LSHIFT(Key_T)) \ + OP(L'ⵠ', RALT(Key_W)) \ + OP(L'ⵡ', Key_W) \ + OP(L'ⵢ', Key_Y) \ + OP(L'ⵣ', Key_Z) \ + OP(L'ⵤ', RALT(Key_Z)) \ + OP(L'ⵥ', LSHIFT(Key_Z)) \ + OP(L'ⵯ', LSHIFT(Key_W)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_9) \ + OP(XKB_KEY_asciitilde, Key_2) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, Key_0) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_grave, Key_7) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, Key_Quote) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_underscore, Key_8) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ma { +namespace tifinagh_alt_phonetic { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace tifinagh_alt_phonetic +} // namespace ma +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ma/tifinagh-alt/keymap.h b/src/kaleidoscope/host_keymap/linux/ma/tifinagh-alt/keymap.h new file mode 100644 index 0000000000..a770a53724 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ma/tifinagh-alt/keymap.h @@ -0,0 +1,350 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ma +// variant: tifinagh-alt + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', Key_Quote) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_0) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_9) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_7) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', Key_2) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', Key_Quote) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_0) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_9) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_7) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', Key_2) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'µ', LSHIFT(Key_NonUsPound)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'ⴰ', Key_Q) \ + OP(L'ⴱ', Key_B) \ + OP(L'ⴲ', RALT(Key_B)) \ + OP(L'ⴳ', Key_G) \ + OP(L'ⴴ', RALT(Key_G)) \ + OP(L'ⴵ', RALT(LSHIFT(Key_G))) \ + OP(L'ⴶ', LSHIFT(Key_G)) \ + OP(L'ⴷ', Key_D) \ + OP(L'ⴸ', RALT(Key_D)) \ + OP(L'ⴹ', LSHIFT(Key_D)) \ + OP(L'ⴺ', RALT(LSHIFT(Key_D))) \ + OP(L'ⴻ', Key_E) \ + OP(L'ⴼ', Key_F) \ + OP(L'ⴽ', Key_K) \ + OP(L'ⴾ', LSHIFT(Key_K)) \ + OP(L'ⴿ', RALT(Key_K)) \ + OP(L'ⵀ', Key_H) \ + OP(L'ⵁ', RALT(Key_H)) \ + OP(L'ⵂ', LSHIFT(Key_H)) \ + OP(L'ⵃ', Key_P) \ + OP(L'ⵄ', Key_O) \ + OP(L'ⵅ', Key_X) \ + OP(L'ⵆ', LSHIFT(Key_X)) \ + OP(L'ⵇ', Key_A) \ + OP(L'ⵈ', LSHIFT(Key_A)) \ + OP(L'ⵉ', Key_I) \ + OP(L'ⵊ', Key_J) \ + OP(L'ⵋ', RALT(Key_J)) \ + OP(L'ⵌ', LSHIFT(Key_J)) \ + OP(L'ⵍ', Key_L) \ + OP(L'ⵎ', Key_Semicolon) \ + OP(L'ⵏ', Key_N) \ + OP(L'ⵐ', LSHIFT(Key_N)) \ + OP(L'ⵑ', RALT(Key_N)) \ + OP(L'ⵒ', LSHIFT(Key_P)) \ + OP(L'ⵓ', Key_U) \ + OP(L'ⵔ', Key_R) \ + OP(L'ⵕ', LSHIFT(Key_R)) \ + OP(L'ⵖ', Key_V) \ + OP(L'ⵗ', LSHIFT(Key_V)) \ + OP(L'ⵘ', RALT(Key_V)) \ + OP(L'ⵙ', Key_S) \ + OP(L'ⵚ', LSHIFT(Key_S)) \ + OP(L'ⵛ', Key_C) \ + OP(L'ⵜ', Key_T) \ + OP(L'ⵝ', RALT(Key_T)) \ + OP(L'ⵞ', LSHIFT(Key_C)) \ + OP(L'ⵟ', LSHIFT(Key_T)) \ + OP(L'ⵠ', RALT(Key_Z)) \ + OP(L'ⵡ', Key_Z) \ + OP(L'ⵢ', Key_Y) \ + OP(L'ⵣ', Key_W) \ + OP(L'ⵤ', RALT(Key_W)) \ + OP(L'ⵥ', LSHIFT(Key_W)) \ + OP(L'ⵯ', LSHIFT(Key_Z)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_9) \ + OP(XKB_KEY_asciitilde, Key_2) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, Key_0) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_grave, Key_7) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, Key_Quote) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_underscore, Key_8) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ma { +namespace tifinagh_alt { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace tifinagh_alt +} // namespace ma +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ma/tifinagh-extended-phonetic/keymap.h b/src/kaleidoscope/host_keymap/linux/ma/tifinagh-extended-phonetic/keymap.h new file mode 100644 index 0000000000..de63d9767e --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ma/tifinagh-extended-phonetic/keymap.h @@ -0,0 +1,347 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ma +// variant: tifinagh-extended-phonetic + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_RightBracket)) \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'µ', LSHIFT(Key_NonUsPound)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'‌', LSHIFT(Key_Backtick)) \ + OP(L'‍', Key_0) \ + OP(L'—', Key_9) \ + OP(L'€', RALT(Key_E)) \ + OP(L'ⴰ', Key_A) \ + OP(L'ⴱ', Key_B) \ + OP(L'ⴲ', LSHIFT(Key_B)) \ + OP(L'ⴳ', Key_G) \ + OP(L'ⴴ', LSHIFT(Key_V)) \ + OP(L'ⴵ', LSHIFT(Key_F)) \ + OP(L'ⴶ', LSHIFT(Key_Q)) \ + OP(L'ⴷ', Key_D) \ + OP(L'ⴸ', LSHIFT(Key_L)) \ + OP(L'ⴹ', LSHIFT(Key_D)) \ + OP(L'ⴺ', LSHIFT(Key_Semicolon)) \ + OP(L'ⴻ', Key_E) \ + OP(L'ⴼ', Key_F) \ + OP(L'ⴽ', Key_K) \ + OP(L'ⴿ', LSHIFT(Key_C)) \ + OP(L'ⵀ', Key_H) \ + OP(L'ⵁ', LSHIFT(Key_H)) \ + OP(L'ⵂ', LSHIFT(Key_Y)) \ + OP(L'ⵃ', Key_P) \ + OP(L'ⵄ', Key_O) \ + OP(L'ⵅ', Key_X) \ + OP(L'ⵆ', LSHIFT(Key_X)) \ + OP(L'ⵇ', Key_Q) \ + OP(L'ⵈ', LSHIFT(Key_A)) \ + OP(L'ⵉ', Key_I) \ + OP(L'ⵊ', Key_J) \ + OP(L'ⵋ', LSHIFT(Key_J)) \ + OP(L'ⵌ', LSHIFT(Key_U)) \ + OP(L'ⵍ', Key_L) \ + OP(L'ⵎ', Key_Semicolon) \ + OP(L'ⵏ', Key_N) \ + OP(L'ⵐ', LSHIFT(Key_N)) \ + OP(L'ⵑ', Key_Quote) \ + OP(L'ⵒ', Key_2) \ + OP(L'ⵓ', Key_U) \ + OP(L'ⵔ', Key_R) \ + OP(L'ⵕ', LSHIFT(Key_R)) \ + OP(L'ⵖ', Key_V) \ + OP(L'ⵗ', LSHIFT(Key_E)) \ + OP(L'ⵘ', LSHIFT(Key_I)) \ + OP(L'ⵙ', Key_S) \ + OP(L'ⵚ', LSHIFT(Key_S)) \ + OP(L'ⵛ', Key_C) \ + OP(L'ⵜ', Key_T) \ + OP(L'ⵝ', LSHIFT(Key_O)) \ + OP(L'ⵞ', LSHIFT(Key_P)) \ + OP(L'ⵟ', LSHIFT(Key_T)) \ + OP(L'ⵠ', LSHIFT(Key_LeftBracket)) \ + OP(L'ⵡ', Key_W) \ + OP(L'ⵢ', Key_Y) \ + OP(L'ⵣ', Key_Z) \ + OP(L'ⵤ', Key_7) \ + OP(L'ⵥ', LSHIFT(Key_W)) \ + OP(L'ⵯ', Key_LeftBracket) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_underscore, Key_8) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ma { +namespace tifinagh_extended_phonetic { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace tifinagh_extended_phonetic +} // namespace ma +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ma/tifinagh-extended/keymap.h b/src/kaleidoscope/host_keymap/linux/ma/tifinagh-extended/keymap.h new file mode 100644 index 0000000000..b15671fdb0 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ma/tifinagh-extended/keymap.h @@ -0,0 +1,351 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ma +// variant: tifinagh-extended + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_RightBracket)) \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'µ', LSHIFT(Key_NonUsPound)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'‌', LSHIFT(Key_Backtick)) \ + OP(L'‍', Key_0) \ + OP(L'—', Key_9) \ + OP(L'€', RALT(Key_E)) \ + OP(L'ⴰ', Key_Q) \ + OP(L'ⴱ', Key_B) \ + OP(L'ⴲ', LSHIFT(Key_B)) \ + OP(L'ⴳ', Key_G) \ + OP(L'ⴴ', LSHIFT(Key_V)) \ + OP(L'ⴵ', LSHIFT(Key_F)) \ + OP(L'ⴶ', LSHIFT(Key_Q)) \ + OP(L'ⴷ', Key_D) \ + OP(L'ⴸ', LSHIFT(Key_L)) \ + OP(L'ⴹ', LSHIFT(Key_D)) \ + OP(L'ⴺ', LSHIFT(Key_Semicolon)) \ + OP(L'ⴻ', Key_E) \ + OP(L'ⴼ', Key_F) \ + OP(L'ⴽ', Key_K) \ + OP(L'ⴾ', LSHIFT(Key_Z)) \ + OP(L'ⴿ', LSHIFT(Key_C)) \ + OP(L'ⵀ', Key_H) \ + OP(L'ⵁ', LSHIFT(Key_H)) \ + OP(L'ⵂ', LSHIFT(Key_Y)) \ + OP(L'ⵃ', Key_P) \ + OP(L'ⵄ', Key_O) \ + OP(L'ⵅ', Key_X) \ + OP(L'ⵆ', LSHIFT(Key_X)) \ + OP(L'ⵇ', Key_A) \ + OP(L'ⵈ', LSHIFT(Key_A)) \ + OP(L'ⵉ', Key_I) \ + OP(L'ⵊ', Key_J) \ + OP(L'ⵋ', LSHIFT(Key_J)) \ + OP(L'ⵌ', LSHIFT(Key_U)) \ + OP(L'ⵍ', Key_L) \ + OP(L'ⵎ', Key_Semicolon) \ + OP(L'ⵏ', Key_N) \ + OP(L'ⵐ', LSHIFT(Key_N)) \ + OP(L'ⵑ', Key_Quote) \ + OP(L'ⵒ', Key_2) \ + OP(L'ⵓ', Key_U) \ + OP(L'ⵔ', Key_R) \ + OP(L'ⵕ', LSHIFT(Key_R)) \ + OP(L'ⵖ', Key_V) \ + OP(L'ⵗ', LSHIFT(Key_E)) \ + OP(L'ⵘ', LSHIFT(Key_I)) \ + OP(L'ⵙ', Key_S) \ + OP(L'ⵚ', LSHIFT(Key_S)) \ + OP(L'ⵛ', Key_C) \ + OP(L'ⵜ', Key_T) \ + OP(L'ⵝ', LSHIFT(Key_O)) \ + OP(L'ⵞ', LSHIFT(Key_P)) \ + OP(L'ⵟ', LSHIFT(Key_T)) \ + OP(L'ⵠ', LSHIFT(Key_LeftBracket)) \ + OP(L'ⵡ', Key_Z) \ + OP(L'ⵢ', Key_Y) \ + OP(L'ⵣ', Key_W) \ + OP(L'ⵤ', Key_7) \ + OP(L'ⵥ', LSHIFT(Key_W)) \ + OP(L'ⵯ', Key_LeftBracket) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_underscore, Key_8) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ma { +namespace tifinagh_extended { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace tifinagh_extended +} // namespace ma +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ma/tifinagh-phonetic/keymap.h b/src/kaleidoscope/host_keymap/linux/ma/tifinagh-phonetic/keymap.h new file mode 100644 index 0000000000..df9f8ee697 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ma/tifinagh-phonetic/keymap.h @@ -0,0 +1,322 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ma +// variant: tifinagh-phonetic + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_RightBracket)) \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'µ', LSHIFT(Key_NonUsPound)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'€', RALT(Key_E)) \ + OP(L'ⴰ', Key_A) \ + OP(L'ⴱ', Key_B) \ + OP(L'ⴳ', Key_G) \ + OP(L'ⴷ', Key_D) \ + OP(L'ⴹ', LSHIFT(Key_D)) \ + OP(L'ⴻ', Key_E) \ + OP(L'ⴼ', Key_F) \ + OP(L'ⴽ', Key_K) \ + OP(L'ⵀ', Key_H) \ + OP(L'ⵃ', Key_P) \ + OP(L'ⵄ', Key_O) \ + OP(L'ⵅ', Key_X) \ + OP(L'ⵇ', Key_Q) \ + OP(L'ⵉ', Key_I) \ + OP(L'ⵊ', Key_J) \ + OP(L'ⵍ', Key_L) \ + OP(L'ⵎ', Key_Semicolon) \ + OP(L'ⵏ', Key_N) \ + OP(L'ⵓ', Key_U) \ + OP(L'ⵔ', Key_R) \ + OP(L'ⵕ', LSHIFT(Key_R)) \ + OP(L'ⵖ', Key_V) \ + OP(L'ⵙ', Key_S) \ + OP(L'ⵚ', LSHIFT(Key_S)) \ + OP(L'ⵛ', Key_C) \ + OP(L'ⵜ', Key_T) \ + OP(L'ⵟ', LSHIFT(Key_T)) \ + OP(L'ⵡ', Key_W) \ + OP(L'ⵢ', Key_Y) \ + OP(L'ⵣ', Key_Z) \ + OP(L'ⵥ', LSHIFT(Key_Z)) \ + OP(L'ⵯ', Key_LeftBracket) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_underscore, Key_8) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ma { +namespace tifinagh_phonetic { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace tifinagh_phonetic +} // namespace ma +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ma/tifinagh/keymap.h b/src/kaleidoscope/host_keymap/linux/ma/tifinagh/keymap.h new file mode 100644 index 0000000000..ca5f786a4e --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ma/tifinagh/keymap.h @@ -0,0 +1,325 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ma +// variant: tifinagh + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_RightBracket)) \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'µ', LSHIFT(Key_NonUsPound)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'€', RALT(Key_E)) \ + OP(L'ⴰ', Key_Q) \ + OP(L'ⴱ', Key_B) \ + OP(L'ⴳ', Key_G) \ + OP(L'ⴷ', Key_D) \ + OP(L'ⴹ', LSHIFT(Key_D)) \ + OP(L'ⴻ', Key_E) \ + OP(L'ⴼ', Key_F) \ + OP(L'ⴽ', Key_K) \ + OP(L'ⵀ', Key_H) \ + OP(L'ⵃ', Key_P) \ + OP(L'ⵄ', Key_O) \ + OP(L'ⵅ', Key_X) \ + OP(L'ⵇ', Key_A) \ + OP(L'ⵉ', Key_I) \ + OP(L'ⵊ', Key_J) \ + OP(L'ⵍ', Key_L) \ + OP(L'ⵎ', Key_Semicolon) \ + OP(L'ⵏ', Key_N) \ + OP(L'ⵓ', Key_U) \ + OP(L'ⵔ', Key_R) \ + OP(L'ⵕ', LSHIFT(Key_R)) \ + OP(L'ⵖ', Key_V) \ + OP(L'ⵙ', Key_S) \ + OP(L'ⵚ', LSHIFT(Key_S)) \ + OP(L'ⵛ', Key_C) \ + OP(L'ⵜ', Key_T) \ + OP(L'ⵟ', LSHIFT(Key_T)) \ + OP(L'ⵡ', Key_Z) \ + OP(L'ⵢ', Key_Y) \ + OP(L'ⵣ', Key_W) \ + OP(L'ⵥ', LSHIFT(Key_W)) \ + OP(L'ⵯ', Key_LeftBracket) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_underscore, Key_8) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ma { +namespace tifinagh { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace tifinagh +} // namespace ma +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/mao/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/mao/standard/keymap.h new file mode 100644 index 0000000000..0b991579ad --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/mao/standard/keymap.h @@ -0,0 +1,583 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: mao +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ā', RALT(LSHIFT(Key_A))) /* U+0100, XKB_KEY_Amacron, LATIN CAPITAL LETTER A WITH MACRON */ \ + OP(L'ā', RALT(Key_A)) /* U+0101, XKB_KEY_amacron, LATIN SMALL LETTER A WITH MACRON */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ē', RALT(LSHIFT(Key_E))) /* U+0112, XKB_KEY_Emacron, LATIN CAPITAL LETTER E WITH MACRON */ \ + OP(L'ē', RALT(Key_E)) /* U+0113, XKB_KEY_emacron, LATIN SMALL LETTER E WITH MACRON */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Ī', RALT(LSHIFT(Key_I))) /* U+012a, XKB_KEY_Imacron, LATIN CAPITAL LETTER I WITH MACRON */ \ + OP(L'ī', RALT(Key_I)) /* U+012b, XKB_KEY_imacron, LATIN SMALL LETTER I WITH MACRON */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ō', RALT(LSHIFT(Key_O))) /* U+014c, XKB_KEY_Omacron, LATIN CAPITAL LETTER O WITH MACRON */ \ + OP(L'ō', RALT(Key_O)) /* U+014d, XKB_KEY_omacron, LATIN SMALL LETTER O WITH MACRON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ū', RALT(LSHIFT(Key_U))) /* U+016a, XKB_KEY_Umacron, LATIN CAPITAL LETTER U WITH MACRON */ \ + OP(L'ū', RALT(Key_U)) /* U+016b, XKB_KEY_umacron, LATIN SMALL LETTER U WITH MACRON */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Amacron, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Emacron, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Imacron, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, LSHIFT(Key_RightAlt)) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Omacron, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Umacron, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_amacron, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emacron, RALT(Key_E)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_imacron, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_omacron, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_umacron, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace mao { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace mao +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/md/gag/keymap.h b/src/kaleidoscope/host_keymap/linux/md/gag/keymap.h new file mode 100644 index 0000000000..1a7f592438 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/md/gag/keymap.h @@ -0,0 +1,476 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: md +// variant: gag + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Period) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Slash)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_Quote)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Period) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Slash)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_Quote)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(LSHIFT(Key_5))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ä', LSHIFT(Key_Comma)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Ç', LSHIFT(Key_X)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ê', LSHIFT(Key_W)) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Ö', LSHIFT(Key_LeftBracket)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'Ü', LSHIFT(Key_RightBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'ä', Key_Comma) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'ç', Key_X) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ê', Key_W) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'ö', Key_LeftBracket) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ü', Key_RightBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'İ', LSHIFT(Key_I)) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'ı', Key_Quote) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ş', LSHIFT(Key_Semicolon)) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', Key_Semicolon) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ţ', LSHIFT(Key_Q)) /* U+0162, XKB_KEY_Tcedilla, LATIN CAPITAL LETTER T WITH CEDILLA */ \ + OP(L'ţ', Key_Q) /* U+0163, XKB_KEY_tcedilla, LATIN SMALL LETTER T WITH CEDILLA */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_X)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Ecircumflex, LSHIFT(Key_W)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, LSHIFT(Key_I)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tcedilla, LSHIFT(Key_Q)) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_X, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Comma) \ + OP(XKB_KEY_ampersand, RALT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_braceright, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_X) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_colon, LSHIFT(Key_6)) \ + OP(XKB_KEY_comma, Key_Period) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_ecircumflex, Key_W) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, Key_Quote) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_LeftBracket) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, LSHIFT(Key_7)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, Key_Semicolon) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_4)) \ + OP(XKB_KEY_slash, RALT(Key_Slash)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_tcedilla, Key_Q) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_RightBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, RALT(Key_W)) \ + OP(XKB_KEY_x, RALT(Key_X)) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace md { +namespace gag { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace gag +} // namespace md +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/md/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/md/standard/keymap.h new file mode 100644 index 0000000000..8ed8d00088 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/md/standard/keymap.h @@ -0,0 +1,496 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: md +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_P)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Comma)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'±', RALT(LSHIFT(Key_Equals))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'»', RALT(Key_Period)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Â', RALT(LSHIFT(Key_Q))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ß', RALT(Key_W)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'â', RALT(Key_Q)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ă', RALT(LSHIFT(Key_A))) /* U+0102, XKB_KEY_Abreve, LATIN CAPITAL LETTER A WITH BREVE */ \ + OP(L'ă', RALT(Key_A)) /* U+0103, XKB_KEY_abreve, LATIN SMALL LETTER A WITH BREVE */ \ + OP(L'Đ', RALT(LSHIFT(Key_D))) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_D)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ș', RALT(LSHIFT(Key_S))) \ + OP(L'ș', RALT(Key_S)) \ + OP(L'Ț', RALT(LSHIFT(Key_T))) \ + OP(L'ț', RALT(Key_T)) \ + OP(L'–', RALT(LSHIFT(Key_Minus))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'”', RALT(Key_RightBracket)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_LeftBracket)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Abreve, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abreve, RALT(Key_A)) \ + OP(XKB_KEY_acircumflex, RALT(Key_Q)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dstroke, RALT(Key_D)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Comma)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_RightBracket)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_P)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_W)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace md { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace md +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/me/cyrillic/keymap.h b/src/kaleidoscope/host_keymap/linux/me/cyrillic/keymap.h new file mode 100644 index 0000000000..21176e8f11 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/me/cyrillic/keymap.h @@ -0,0 +1,462 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: me +// variant: cyrillic + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_E))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_O)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(LSHIFT(Key_D))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_Backtick))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'»', RALT(LSHIFT(Key_S))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ђ', LSHIFT(Key_RightBracket)) /* U+0402, XKB_KEY_Serbian_DJE, CYRILLIC CAPITAL LETTER DJE */ \ + OP(L'Ј', LSHIFT(Key_J)) /* U+0408, XKB_KEY_Cyrillic_JE, CYRILLIC CAPITAL LETTER JE */ \ + OP(L'Љ', LSHIFT(Key_Q)) /* U+0409, XKB_KEY_Cyrillic_LJE, CYRILLIC CAPITAL LETTER LJE */ \ + OP(L'Њ', LSHIFT(Key_W)) /* U+040a, XKB_KEY_Cyrillic_NJE, CYRILLIC CAPITAL LETTER NJE */ \ + OP(L'Ћ', LSHIFT(Key_Quote)) /* U+040b, XKB_KEY_Serbian_TSHE, CYRILLIC CAPITAL LETTER TSHE */ \ + OP(L'Џ', LSHIFT(Key_X)) /* U+040f, XKB_KEY_Cyrillic_DZHE, CYRILLIC CAPITAL LETTER DZHE */ \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_V)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_G)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_NonUsPound)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Y)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_I)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_H)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_C)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_Semicolon)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_LeftBracket)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_V) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_G) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_NonUsPound) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Y) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_I) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_H) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_C) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_Semicolon) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_LeftBracket) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'ђ', Key_RightBracket) /* U+0452, XKB_KEY_Serbian_dje, CYRILLIC SMALL LETTER DJE */ \ + OP(L'ј', Key_J) /* U+0458, XKB_KEY_Cyrillic_je, CYRILLIC SMALL LETTER JE */ \ + OP(L'љ', Key_Q) /* U+0459, XKB_KEY_Cyrillic_lje, CYRILLIC SMALL LETTER LJE */ \ + OP(L'њ', Key_W) /* U+045a, XKB_KEY_Cyrillic_nje, CYRILLIC SMALL LETTER NJE */ \ + OP(L'ћ', Key_Quote) /* U+045b, XKB_KEY_Serbian_tshe, CYRILLIC SMALL LETTER TSHE */ \ + OP(L'џ', Key_X) /* U+045f, XKB_KEY_Cyrillic_dzhe, CYRILLIC SMALL LETTER DZHE */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_D)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_S)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_T)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_DZHE, LSHIFT(Key_X)) /* XKB_KEY_Serbian_DZE, deprecated */ \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_JE, LSHIFT(Key_J)) /* XKB_KEY_Serbian_JE, deprecated */ \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_LJE, LSHIFT(Key_Q)) /* XKB_KEY_Serbian_LJE, deprecated */ \ + OP(XKB_KEY_Cyrillic_NJE, LSHIFT(Key_W)) /* XKB_KEY_Serbian_NJE, deprecated */ \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_dzhe, Key_X) /* XKB_KEY_Serbian_dze, deprecated */ \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_G) \ + OP(XKB_KEY_Cyrillic_ha, Key_H) \ + OP(XKB_KEY_Cyrillic_i, Key_I) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_je, Key_J) /* XKB_KEY_Serbian_je, deprecated */ \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_lje, Key_Q) /* XKB_KEY_Serbian_lje, deprecated */ \ + OP(XKB_KEY_Cyrillic_nje, Key_W) /* XKB_KEY_Serbian_nje, deprecated */ \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_C) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_ve, Key_V) \ + OP(XKB_KEY_Cyrillic_ze, Key_Y) \ + OP(XKB_KEY_Cyrillic_zhe, Key_NonUsPound) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Serbian_DJE, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Serbian_TSHE, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Serbian_dje, Key_RightBracket) \ + OP(XKB_KEY_Serbian_tshe, Key_Quote) \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_doublegrave, RALT(Key_8)) /* XKB_KEY_dead_doublegrave */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_invertedbreve, RALT(Key_0)) /* XKB_KEY_dead_invertedbreve */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Minus)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_degree, RALT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_S)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_ellipsis, RALT(Key_T)) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_D)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_section, RALT(Key_O)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace me { +namespace cyrillic { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace cyrillic +} // namespace me +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/me/cyrillicalternatequotes/keymap.h b/src/kaleidoscope/host_keymap/linux/me/cyrillicalternatequotes/keymap.h new file mode 100644 index 0000000000..e51a54eabf --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/me/cyrillicalternatequotes/keymap.h @@ -0,0 +1,458 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: me +// variant: cyrillicalternatequotes + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_E))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_O)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_D)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_Backtick))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'»', RALT(Key_S)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ђ', LSHIFT(Key_RightBracket)) /* U+0402, XKB_KEY_Serbian_DJE, CYRILLIC CAPITAL LETTER DJE */ \ + OP(L'Ј', LSHIFT(Key_J)) /* U+0408, XKB_KEY_Cyrillic_JE, CYRILLIC CAPITAL LETTER JE */ \ + OP(L'Љ', LSHIFT(Key_Q)) /* U+0409, XKB_KEY_Cyrillic_LJE, CYRILLIC CAPITAL LETTER LJE */ \ + OP(L'Њ', LSHIFT(Key_W)) /* U+040a, XKB_KEY_Cyrillic_NJE, CYRILLIC CAPITAL LETTER NJE */ \ + OP(L'Ћ', LSHIFT(Key_Quote)) /* U+040b, XKB_KEY_Serbian_TSHE, CYRILLIC CAPITAL LETTER TSHE */ \ + OP(L'Џ', LSHIFT(Key_X)) /* U+040f, XKB_KEY_Cyrillic_DZHE, CYRILLIC CAPITAL LETTER DZHE */ \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_V)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_G)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_NonUsPound)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Y)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_I)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_H)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_C)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_Semicolon)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_LeftBracket)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_V) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_G) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_NonUsPound) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Y) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_I) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_H) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_C) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_Semicolon) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_LeftBracket) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'ђ', Key_RightBracket) /* U+0452, XKB_KEY_Serbian_dje, CYRILLIC SMALL LETTER DJE */ \ + OP(L'ј', Key_J) /* U+0458, XKB_KEY_Cyrillic_je, CYRILLIC SMALL LETTER JE */ \ + OP(L'љ', Key_Q) /* U+0459, XKB_KEY_Cyrillic_lje, CYRILLIC SMALL LETTER LJE */ \ + OP(L'њ', Key_W) /* U+045a, XKB_KEY_Cyrillic_nje, CYRILLIC SMALL LETTER NJE */ \ + OP(L'ћ', Key_Quote) /* U+045b, XKB_KEY_Serbian_tshe, CYRILLIC SMALL LETTER TSHE */ \ + OP(L'џ', Key_X) /* U+045f, XKB_KEY_Cyrillic_dzhe, CYRILLIC SMALL LETTER DZHE */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'…', RALT(Key_T)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_DZHE, LSHIFT(Key_X)) /* XKB_KEY_Serbian_DZE, deprecated */ \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_JE, LSHIFT(Key_J)) /* XKB_KEY_Serbian_JE, deprecated */ \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_LJE, LSHIFT(Key_Q)) /* XKB_KEY_Serbian_LJE, deprecated */ \ + OP(XKB_KEY_Cyrillic_NJE, LSHIFT(Key_W)) /* XKB_KEY_Serbian_NJE, deprecated */ \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_dzhe, Key_X) /* XKB_KEY_Serbian_dze, deprecated */ \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_G) \ + OP(XKB_KEY_Cyrillic_ha, Key_H) \ + OP(XKB_KEY_Cyrillic_i, Key_I) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_je, Key_J) /* XKB_KEY_Serbian_je, deprecated */ \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_lje, Key_Q) /* XKB_KEY_Serbian_lje, deprecated */ \ + OP(XKB_KEY_Cyrillic_nje, Key_W) /* XKB_KEY_Serbian_nje, deprecated */ \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_C) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_ve, Key_V) \ + OP(XKB_KEY_Cyrillic_ze, Key_Y) \ + OP(XKB_KEY_Cyrillic_zhe, Key_NonUsPound) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Serbian_DJE, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Serbian_TSHE, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Serbian_dje, Key_RightBracket) \ + OP(XKB_KEY_Serbian_tshe, Key_Quote) \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_doublegrave, RALT(Key_8)) /* XKB_KEY_dead_doublegrave */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_invertedbreve, RALT(Key_0)) /* XKB_KEY_dead_invertedbreve */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Minus)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_degree, RALT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_ellipsis, RALT(Key_T)) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_D)) \ + OP(XKB_KEY_guillemotright, RALT(Key_S)) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_section, RALT(Key_O)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace me { +namespace cyrillicalternatequotes { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace cyrillicalternatequotes +} // namespace me +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/me/cyrillicyz/keymap.h b/src/kaleidoscope/host_keymap/linux/me/cyrillicyz/keymap.h new file mode 100644 index 0000000000..a677a3d73b --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/me/cyrillicyz/keymap.h @@ -0,0 +1,462 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: me +// variant: cyrillicyz + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_E))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_O)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(LSHIFT(Key_D))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_Backtick))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'»', RALT(LSHIFT(Key_S))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ђ', LSHIFT(Key_RightBracket)) /* U+0402, XKB_KEY_Serbian_DJE, CYRILLIC CAPITAL LETTER DJE */ \ + OP(L'Ј', LSHIFT(Key_J)) /* U+0408, XKB_KEY_Cyrillic_JE, CYRILLIC CAPITAL LETTER JE */ \ + OP(L'Љ', LSHIFT(Key_Q)) /* U+0409, XKB_KEY_Cyrillic_LJE, CYRILLIC CAPITAL LETTER LJE */ \ + OP(L'Њ', LSHIFT(Key_W)) /* U+040a, XKB_KEY_Cyrillic_NJE, CYRILLIC CAPITAL LETTER NJE */ \ + OP(L'Ћ', LSHIFT(Key_Quote)) /* U+040b, XKB_KEY_Serbian_TSHE, CYRILLIC CAPITAL LETTER TSHE */ \ + OP(L'Џ', LSHIFT(Key_X)) /* U+040f, XKB_KEY_Cyrillic_DZHE, CYRILLIC CAPITAL LETTER DZHE */ \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_V)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_G)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Y)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Z)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_I)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_H)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_C)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_Semicolon)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_LeftBracket)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_V) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_G) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Y) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Z) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_I) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_H) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_C) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_Semicolon) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_LeftBracket) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'ђ', Key_RightBracket) /* U+0452, XKB_KEY_Serbian_dje, CYRILLIC SMALL LETTER DJE */ \ + OP(L'ј', Key_J) /* U+0458, XKB_KEY_Cyrillic_je, CYRILLIC SMALL LETTER JE */ \ + OP(L'љ', Key_Q) /* U+0459, XKB_KEY_Cyrillic_lje, CYRILLIC SMALL LETTER LJE */ \ + OP(L'њ', Key_W) /* U+045a, XKB_KEY_Cyrillic_nje, CYRILLIC SMALL LETTER NJE */ \ + OP(L'ћ', Key_Quote) /* U+045b, XKB_KEY_Serbian_tshe, CYRILLIC SMALL LETTER TSHE */ \ + OP(L'џ', Key_X) /* U+045f, XKB_KEY_Cyrillic_dzhe, CYRILLIC SMALL LETTER DZHE */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_D)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_S)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_T)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_DZHE, LSHIFT(Key_X)) /* XKB_KEY_Serbian_DZE, deprecated */ \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_JE, LSHIFT(Key_J)) /* XKB_KEY_Serbian_JE, deprecated */ \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_LJE, LSHIFT(Key_Q)) /* XKB_KEY_Serbian_LJE, deprecated */ \ + OP(XKB_KEY_Cyrillic_NJE, LSHIFT(Key_W)) /* XKB_KEY_Serbian_NJE, deprecated */ \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_dzhe, Key_X) /* XKB_KEY_Serbian_dze, deprecated */ \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_G) \ + OP(XKB_KEY_Cyrillic_ha, Key_H) \ + OP(XKB_KEY_Cyrillic_i, Key_I) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_je, Key_J) /* XKB_KEY_Serbian_je, deprecated */ \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_lje, Key_Q) /* XKB_KEY_Serbian_lje, deprecated */ \ + OP(XKB_KEY_Cyrillic_nje, Key_W) /* XKB_KEY_Serbian_nje, deprecated */ \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_C) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_ve, Key_V) \ + OP(XKB_KEY_Cyrillic_ze, Key_Z) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Y) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Serbian_DJE, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Serbian_TSHE, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Serbian_dje, Key_RightBracket) \ + OP(XKB_KEY_Serbian_tshe, Key_Quote) \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_doublegrave, RALT(Key_8)) /* XKB_KEY_dead_doublegrave */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_invertedbreve, RALT(Key_0)) /* XKB_KEY_dead_invertedbreve */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Minus)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_degree, RALT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_S)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_ellipsis, RALT(Key_T)) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_D)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_section, RALT(Key_O)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace me { +namespace cyrillicyz { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace cyrillicyz +} // namespace me +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/me/latinalternatequotes/keymap.h b/src/kaleidoscope/host_keymap/linux/me/latinalternatequotes/keymap.h new file mode 100644 index 0000000000..c1a28caa59 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/me/latinalternatequotes/keymap.h @@ -0,0 +1,569 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: me +// variant: latinalternatequotes + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_D)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_Z))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ć', LSHIFT(Key_Quote)) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', Key_Quote) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', LSHIFT(Key_Semicolon)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Semicolon) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_RightBracket)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_RightBracket) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ś', RALT(LSHIFT(Key_S))) /* U+015a, XKB_KEY_Sacute, LATIN CAPITAL LETTER S WITH ACUTE */ \ + OP(L'ś', RALT(Key_S)) /* U+015b, XKB_KEY_sacute, LATIN SMALL LETTER S WITH ACUTE */ \ + OP(L'Š', LSHIFT(Key_LeftBracket)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_LeftBracket) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ź', RALT(LSHIFT(Key_Y))) /* U+0179, XKB_KEY_Zacute, LATIN CAPITAL LETTER Z WITH ACUTE */ \ + OP(L'ź', RALT(Key_Y)) /* U+017a, XKB_KEY_zacute, LATIN SMALL LETTER Z WITH ACUTE */ \ + OP(L'Ž', LSHIFT(Key_NonUsPound)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_NonUsPound) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Sacute, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Zacute, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, Key_Quote) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ccaron, Key_Semicolon) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_D)) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_sacute, RALT(Key_S)) \ + OP(XKB_KEY_scaron, Key_LeftBracket) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_z, Key_Y) \ + OP(XKB_KEY_zacute, RALT(Key_Y)) \ + OP(XKB_KEY_zcaron, Key_NonUsPound) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace me { +namespace latinalternatequotes { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace latinalternatequotes +} // namespace me +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/me/latinunicode/keymap.h b/src/kaleidoscope/host_keymap/linux/me/latinunicode/keymap.h new file mode 100644 index 0000000000..e298cff7c2 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/me/latinunicode/keymap.h @@ -0,0 +1,556 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: me +// variant: latinunicode + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(LSHIFT(Key_D))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_Z))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ć', LSHIFT(Key_Quote)) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', Key_Quote) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', LSHIFT(Key_Semicolon)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Semicolon) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_RightBracket)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_RightBracket) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ś', RALT(LSHIFT(Key_S))) /* U+015a, XKB_KEY_Sacute, LATIN CAPITAL LETTER S WITH ACUTE */ \ + OP(L'ś', RALT(Key_S)) /* U+015b, XKB_KEY_sacute, LATIN SMALL LETTER S WITH ACUTE */ \ + OP(L'Š', LSHIFT(Key_LeftBracket)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_LeftBracket) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ź', RALT(LSHIFT(Key_Y))) /* U+0179, XKB_KEY_Zacute, LATIN CAPITAL LETTER Z WITH ACUTE */ \ + OP(L'ź', RALT(Key_Y)) /* U+017a, XKB_KEY_zacute, LATIN SMALL LETTER Z WITH ACUTE */ \ + OP(L'Ž', LSHIFT(Key_NonUsPound)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_NonUsPound) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'DŽ', RALT(LSHIFT(Key_X))) \ + OP(L'Dž', LSHIFT(Key_X)) \ + OP(L'dž', Key_X) \ + OP(L'LJ', RALT(LSHIFT(Key_Q))) \ + OP(L'Lj', LSHIFT(Key_Q)) \ + OP(L'lj', Key_Q) \ + OP(L'NJ', RALT(LSHIFT(Key_W))) \ + OP(L'Nj', LSHIFT(Key_W)) \ + OP(L'nj', Key_W) \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_D)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Sacute, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Zacute, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, Key_Quote) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ccaron, Key_Semicolon) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_D)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_sacute, RALT(Key_S)) \ + OP(XKB_KEY_scaron, Key_LeftBracket) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_z, Key_Y) \ + OP(XKB_KEY_zacute, RALT(Key_Y)) \ + OP(XKB_KEY_zcaron, Key_NonUsPound) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace me { +namespace latinunicode { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace latinunicode +} // namespace me +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/me/latinunicodeyz/keymap.h b/src/kaleidoscope/host_keymap/linux/me/latinunicodeyz/keymap.h new file mode 100644 index 0000000000..284dddbf8e --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/me/latinunicodeyz/keymap.h @@ -0,0 +1,557 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: me +// variant: latinunicodeyz + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(LSHIFT(Key_D))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_Z))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ć', LSHIFT(Key_Quote)) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', Key_Quote) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', LSHIFT(Key_Semicolon)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Semicolon) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_RightBracket)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_RightBracket) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ś', RALT(LSHIFT(Key_S))) /* U+015a, XKB_KEY_Sacute, LATIN CAPITAL LETTER S WITH ACUTE */ \ + OP(L'ś', RALT(Key_S)) /* U+015b, XKB_KEY_sacute, LATIN SMALL LETTER S WITH ACUTE */ \ + OP(L'Š', LSHIFT(Key_LeftBracket)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_LeftBracket) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ź', RALT(LSHIFT(Key_X))) /* U+0179, XKB_KEY_Zacute, LATIN CAPITAL LETTER Z WITH ACUTE */ \ + OP(L'ź', RALT(Key_X)) /* U+017a, XKB_KEY_zacute, LATIN SMALL LETTER Z WITH ACUTE */ \ + OP(L'Ž', LSHIFT(Key_Y)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_Y) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'Dž', LSHIFT(Key_X)) \ + OP(L'dž', Key_X) \ + OP(L'LJ', RALT(LSHIFT(Key_Q))) \ + OP(L'Lj', LSHIFT(Key_Q)) \ + OP(L'lj', Key_Q) \ + OP(L'NJ', RALT(LSHIFT(Key_W))) \ + OP(L'Nj', LSHIFT(Key_W)) \ + OP(L'nj', Key_W) \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_D)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Sacute, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zacute, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, Key_Quote) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ccaron, Key_Semicolon) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_D)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_sacute, RALT(Key_S)) \ + OP(XKB_KEY_scaron, Key_LeftBracket) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zacute, RALT(Key_X)) \ + OP(XKB_KEY_zcaron, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace me { +namespace latinunicodeyz { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace latinunicodeyz +} // namespace me +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/me/latinyz/keymap.h b/src/kaleidoscope/host_keymap/linux/me/latinyz/keymap.h new file mode 100644 index 0000000000..0ddfa4f79d --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/me/latinyz/keymap.h @@ -0,0 +1,575 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: me +// variant: latinyz + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(LSHIFT(Key_D))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_Z))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ć', LSHIFT(Key_Quote)) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', Key_Quote) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', LSHIFT(Key_Semicolon)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Semicolon) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_RightBracket)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_RightBracket) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ś', RALT(LSHIFT(Key_S))) /* U+015a, XKB_KEY_Sacute, LATIN CAPITAL LETTER S WITH ACUTE */ \ + OP(L'ś', RALT(Key_S)) /* U+015b, XKB_KEY_sacute, LATIN SMALL LETTER S WITH ACUTE */ \ + OP(L'Š', LSHIFT(Key_LeftBracket)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_LeftBracket) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ź', RALT(LSHIFT(Key_X))) /* U+0179, XKB_KEY_Zacute, LATIN CAPITAL LETTER Z WITH ACUTE */ \ + OP(L'ź', RALT(Key_X)) /* U+017a, XKB_KEY_zacute, LATIN SMALL LETTER Z WITH ACUTE */ \ + OP(L'Ž', LSHIFT(Key_NonUsPound)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_NonUsPound) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_D)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Sacute, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zacute, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, Key_Quote) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ccaron, Key_Semicolon) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_D)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_sacute, RALT(Key_S)) \ + OP(XKB_KEY_scaron, Key_LeftBracket) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zacute, RALT(Key_X)) \ + OP(XKB_KEY_zcaron, Key_NonUsPound) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace me { +namespace latinyz { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace latinyz +} // namespace me +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/me/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/me/standard/keymap.h new file mode 100644 index 0000000000..37377ca1d1 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/me/standard/keymap.h @@ -0,0 +1,573 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: me +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(LSHIFT(Key_D))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_Z))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ć', LSHIFT(Key_Quote)) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', Key_Quote) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', LSHIFT(Key_Semicolon)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Semicolon) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_RightBracket)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_RightBracket) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Ś', RALT(LSHIFT(Key_S))) /* U+015a, XKB_KEY_Sacute, LATIN CAPITAL LETTER S WITH ACUTE */ \ + OP(L'ś', RALT(Key_S)) /* U+015b, XKB_KEY_sacute, LATIN SMALL LETTER S WITH ACUTE */ \ + OP(L'Š', LSHIFT(Key_LeftBracket)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_LeftBracket) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ź', RALT(LSHIFT(Key_Y))) /* U+0179, XKB_KEY_Zacute, LATIN CAPITAL LETTER Z WITH ACUTE */ \ + OP(L'ź', RALT(Key_Y)) /* U+017a, XKB_KEY_zacute, LATIN SMALL LETTER Z WITH ACUTE */ \ + OP(L'Ž', LSHIFT(Key_NonUsPound)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_NonUsPound) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_D)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Sacute, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Zacute, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, Key_Quote) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ccaron, Key_Semicolon) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_D)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_sacute, RALT(Key_S)) \ + OP(XKB_KEY_scaron, Key_LeftBracket) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_z, Key_Y) \ + OP(XKB_KEY_zacute, RALT(Key_Y)) \ + OP(XKB_KEY_zcaron, Key_NonUsPound) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace me { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace me +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/mk/nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/mk/nodeadkeys/keymap.h new file mode 100644 index 0000000000..c0d6acd975 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/mk/nodeadkeys/keymap.h @@ -0,0 +1,381 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: mk +// variant: nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Ѓ', LSHIFT(Key_RightBracket)) /* U+0403, XKB_KEY_Macedonia_GJE, CYRILLIC CAPITAL LETTER GJE */ \ + OP(L'Ѕ', LSHIFT(Key_Y)) /* U+0405, XKB_KEY_Macedonia_DSE, CYRILLIC CAPITAL LETTER DZE */ \ + OP(L'Ј', LSHIFT(Key_J)) /* U+0408, XKB_KEY_Cyrillic_JE, CYRILLIC CAPITAL LETTER JE */ \ + OP(L'Љ', LSHIFT(Key_Q)) /* U+0409, XKB_KEY_Cyrillic_LJE, CYRILLIC CAPITAL LETTER LJE */ \ + OP(L'Њ', LSHIFT(Key_W)) /* U+040a, XKB_KEY_Cyrillic_NJE, CYRILLIC CAPITAL LETTER NJE */ \ + OP(L'Ќ', LSHIFT(Key_Quote)) /* U+040c, XKB_KEY_Macedonia_KJE, CYRILLIC CAPITAL LETTER KJE */ \ + OP(L'Џ', LSHIFT(Key_X)) /* U+040f, XKB_KEY_Cyrillic_DZHE, CYRILLIC CAPITAL LETTER DZHE */ \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_V)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_G)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_NonUsPound)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Z)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_I)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_H)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_C)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_Semicolon)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_LeftBracket)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_V) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_G) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_NonUsPound) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Z) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_I) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_H) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_C) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_Semicolon) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_LeftBracket) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'ѓ', Key_RightBracket) /* U+0453, XKB_KEY_Macedonia_gje, CYRILLIC SMALL LETTER GJE */ \ + OP(L'ѕ', Key_Y) /* U+0455, XKB_KEY_Macedonia_dse, CYRILLIC SMALL LETTER DZE */ \ + OP(L'ј', Key_J) /* U+0458, XKB_KEY_Cyrillic_je, CYRILLIC SMALL LETTER JE */ \ + OP(L'љ', Key_Q) /* U+0459, XKB_KEY_Cyrillic_lje, CYRILLIC SMALL LETTER LJE */ \ + OP(L'њ', Key_W) /* U+045a, XKB_KEY_Cyrillic_nje, CYRILLIC SMALL LETTER NJE */ \ + OP(L'ќ', Key_Quote) /* U+045c, XKB_KEY_Macedonia_kje, CYRILLIC SMALL LETTER KJE */ \ + OP(L'џ', Key_X) /* U+045f, XKB_KEY_Cyrillic_dzhe, CYRILLIC SMALL LETTER DZHE */ \ + OP(L'“', LSHIFT(Key_3)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', LSHIFT(Key_2)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_DZHE, LSHIFT(Key_X)) /* XKB_KEY_Serbian_DZE, deprecated */ \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_JE, LSHIFT(Key_J)) /* XKB_KEY_Serbian_JE, deprecated */ \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_LJE, LSHIFT(Key_Q)) /* XKB_KEY_Serbian_LJE, deprecated */ \ + OP(XKB_KEY_Cyrillic_NJE, LSHIFT(Key_W)) /* XKB_KEY_Serbian_NJE, deprecated */ \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_dzhe, Key_X) /* XKB_KEY_Serbian_dze, deprecated */ \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_G) \ + OP(XKB_KEY_Cyrillic_ha, Key_H) \ + OP(XKB_KEY_Cyrillic_i, Key_I) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_je, Key_J) /* XKB_KEY_Serbian_je, deprecated */ \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_lje, Key_Q) /* XKB_KEY_Serbian_lje, deprecated */ \ + OP(XKB_KEY_Cyrillic_nje, Key_W) /* XKB_KEY_Serbian_nje, deprecated */ \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_C) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_ve, Key_V) \ + OP(XKB_KEY_Cyrillic_ze, Key_Z) \ + OP(XKB_KEY_Cyrillic_zhe, Key_NonUsPound) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Macedonia_DSE, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Macedonia_GJE, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Macedonia_KJE, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Macedonia_dse, Key_Y) \ + OP(XKB_KEY_Macedonia_gje, Key_RightBracket) \ + OP(XKB_KEY_Macedonia_kje, Key_Quote) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, LSHIFT(Key_2)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_leftdoublequotemark, LSHIFT(Key_3)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace mk { +namespace nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace nodeadkeys +} // namespace mk +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/mk/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/mk/standard/keymap.h new file mode 100644 index 0000000000..6e2c3ccca7 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/mk/standard/keymap.h @@ -0,0 +1,379 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: mk +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Ѓ', LSHIFT(Key_RightBracket)) /* U+0403, XKB_KEY_Macedonia_GJE, CYRILLIC CAPITAL LETTER GJE */ \ + OP(L'Ѕ', LSHIFT(Key_Y)) /* U+0405, XKB_KEY_Macedonia_DSE, CYRILLIC CAPITAL LETTER DZE */ \ + OP(L'Ј', LSHIFT(Key_J)) /* U+0408, XKB_KEY_Cyrillic_JE, CYRILLIC CAPITAL LETTER JE */ \ + OP(L'Љ', LSHIFT(Key_Q)) /* U+0409, XKB_KEY_Cyrillic_LJE, CYRILLIC CAPITAL LETTER LJE */ \ + OP(L'Њ', LSHIFT(Key_W)) /* U+040a, XKB_KEY_Cyrillic_NJE, CYRILLIC CAPITAL LETTER NJE */ \ + OP(L'Ќ', LSHIFT(Key_Quote)) /* U+040c, XKB_KEY_Macedonia_KJE, CYRILLIC CAPITAL LETTER KJE */ \ + OP(L'Џ', LSHIFT(Key_X)) /* U+040f, XKB_KEY_Cyrillic_DZHE, CYRILLIC CAPITAL LETTER DZHE */ \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_V)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_G)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_NonUsPound)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Z)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_I)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_H)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_C)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_Semicolon)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_LeftBracket)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_V) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_G) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_NonUsPound) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Z) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_I) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_H) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_C) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_Semicolon) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_LeftBracket) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'ѓ', Key_RightBracket) /* U+0453, XKB_KEY_Macedonia_gje, CYRILLIC SMALL LETTER GJE */ \ + OP(L'ѕ', Key_Y) /* U+0455, XKB_KEY_Macedonia_dse, CYRILLIC SMALL LETTER DZE */ \ + OP(L'ј', Key_J) /* U+0458, XKB_KEY_Cyrillic_je, CYRILLIC SMALL LETTER JE */ \ + OP(L'љ', Key_Q) /* U+0459, XKB_KEY_Cyrillic_lje, CYRILLIC SMALL LETTER LJE */ \ + OP(L'њ', Key_W) /* U+045a, XKB_KEY_Cyrillic_nje, CYRILLIC SMALL LETTER NJE */ \ + OP(L'ќ', Key_Quote) /* U+045c, XKB_KEY_Macedonia_kje, CYRILLIC SMALL LETTER KJE */ \ + OP(L'џ', Key_X) /* U+045f, XKB_KEY_Cyrillic_dzhe, CYRILLIC SMALL LETTER DZHE */ \ + OP(L'“', LSHIFT(Key_3)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', LSHIFT(Key_2)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_DZHE, LSHIFT(Key_X)) /* XKB_KEY_Serbian_DZE, deprecated */ \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_JE, LSHIFT(Key_J)) /* XKB_KEY_Serbian_JE, deprecated */ \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_LJE, LSHIFT(Key_Q)) /* XKB_KEY_Serbian_LJE, deprecated */ \ + OP(XKB_KEY_Cyrillic_NJE, LSHIFT(Key_W)) /* XKB_KEY_Serbian_NJE, deprecated */ \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_dzhe, Key_X) /* XKB_KEY_Serbian_dze, deprecated */ \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_G) \ + OP(XKB_KEY_Cyrillic_ha, Key_H) \ + OP(XKB_KEY_Cyrillic_i, Key_I) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_je, Key_J) /* XKB_KEY_Serbian_je, deprecated */ \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_lje, Key_Q) /* XKB_KEY_Serbian_lje, deprecated */ \ + OP(XKB_KEY_Cyrillic_nje, Key_W) /* XKB_KEY_Serbian_nje, deprecated */ \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_C) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_ve, Key_V) \ + OP(XKB_KEY_Cyrillic_ze, Key_Z) \ + OP(XKB_KEY_Cyrillic_zhe, Key_NonUsPound) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Macedonia_DSE, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Macedonia_GJE, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Macedonia_KJE, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Macedonia_dse, Key_Y) \ + OP(XKB_KEY_Macedonia_gje, Key_RightBracket) \ + OP(XKB_KEY_Macedonia_kje, Key_Quote) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dead_grave, Key_Backtick) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, LSHIFT(Key_2)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_leftdoublequotemark, LSHIFT(Key_3)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace mk { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace mk +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ml/fr-oss/keymap.h b/src/kaleidoscope/host_keymap/linux/ml/fr-oss/keymap.h new file mode 100644 index 0000000000..5d496d5fa0 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ml/fr-oss/keymap.h @@ -0,0 +1,618 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ml +// variant: fr-oss + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_Slash)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_E))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_G))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_N)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_C))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Equals))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', LSHIFT(Key_Backtick)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', LSHIFT(Key_NonUsPound)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¹', RALT(Key_Backtick)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_M)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', RALT(LSHIFT(Key_0))) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Ä', RALT(LSHIFT(Key_A))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_Q))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_9))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', RALT(LSHIFT(Key_7))) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'É', RALT(LSHIFT(Key_2))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ï', RALT(LSHIFT(Key_K))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_H))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_RightBracket))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ù', RALT(LSHIFT(Key_Quote))) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'Û', RALT(LSHIFT(Key_U))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_Q)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ï', RALT(Key_K)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_H)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(Key_Period)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_RightBracket)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'û', RALT(Key_U)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ÿ', RALT(Key_Y)) /* U+00ff, XKB_KEY_ydiaeresis, LATIN SMALL LETTER Y WITH DIAERESIS */ \ + OP(L'Ŀ', RALT(LSHIFT(Key_L))) \ + OP(L'ŀ', RALT(Key_L)) \ + OP(L'Ŋ', RALT(LSHIFT(Key_Semicolon))) \ + OP(L'ŋ', RALT(Key_Semicolon)) \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Š', RALT(LSHIFT(Key_D))) \ + OP(L'š', RALT(Key_D)) \ + OP(L'Ÿ', RALT(LSHIFT(Key_Y))) /* U+0178, XKB_KEY_Ydiaeresis, LATIN CAPITAL LETTER Y WITH DIAERESIS */ \ + OP(L'Ž', RALT(LSHIFT(Key_W))) \ + OP(L'ž', RALT(Key_W)) \ + OP(L'Ɔ', RALT(LSHIFT(Key_P))) \ + OP(L'Ɛ', RALT(LSHIFT(Key_R))) \ + OP(L'Ɲ', RALT(LSHIFT(Key_J))) \ + OP(L'ɔ', RALT(Key_P)) \ + OP(L'ɛ', RALT(Key_R)) \ + OP(L'ɲ', RALT(Key_J)) \ + OP(L'‑', RALT(LSHIFT(Key_6))) \ + OP(L'–', RALT(LSHIFT(Key_5))) \ + OP(L'—', RALT(LSHIFT(Key_4))) \ + OP(L'‘', RALT(Key_F)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_G)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_F))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_Z))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_X))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_S))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(LSHIFT(Key_M))) \ + OP(L' ', RALT(Key_V)) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'←', RALT(Key_Keypad4)) \ + OP(L'↑', RALT(Key_Keypad8)) \ + OP(L'→', RALT(Key_Keypad6)) \ + OP(L'↓', RALT(Key_B)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'↔', RALT(Key_Keypad5)) \ + OP(L'↕', RALT(Key_Keypad0)) \ + OP(L'↖', RALT(Key_Keypad7)) \ + OP(L'↗', RALT(Key_Keypad9)) \ + OP(L'↘', RALT(Key_Keypad3)) \ + OP(L'↙', RALT(Key_Keypad1)) \ + OP(L'⇐', RALT(LSHIFT(Key_Keypad4))) \ + OP(L'⇑', RALT(LSHIFT(Key_Keypad8))) \ + OP(L'⇒', RALT(LSHIFT(Key_Keypad6))) \ + OP(L'⇓', RALT(LSHIFT(Key_Keypad2))) \ + OP(L'⇔', RALT(LSHIFT(Key_Keypad5))) \ + OP(L'⇕', RALT(LSHIFT(Key_Keypad0))) \ + OP(L'⇖', RALT(LSHIFT(Key_Keypad7))) \ + OP(L'⇗', RALT(LSHIFT(Key_Keypad9))) \ + OP(L'⇘', RALT(LSHIFT(Key_Keypad3))) \ + OP(L'⇙', RALT(LSHIFT(Key_Keypad1))) \ + OP(L'−', RALT(Key_KeypadSubtract)) \ + OP(L'∕', LSHIFT(Key_KeypadDivide)) \ + OP(L'≠', RALT(LSHIFT(Key_Minus))) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'≤', RALT(Key_NonUsBackslashAndPipe)) /* U+2264, XKB_KEY_lessthanequal, LESS-THAN OR EQUAL TO */ \ + OP(L'≥', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+2265, XKB_KEY_greaterthanequal, GREATER-THAN OR EQUAL TO */ \ + OP(L'⋅', LSHIFT(Key_KeypadMultiply)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Agrave, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_H))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Egrave, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Ugrave, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Ydiaeresis, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ae, RALT(Key_Q)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Quote)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_1)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_LeftBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(Key_Period)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_downarrow, RALT(Key_B)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_H)) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_exclamdown, RALT(Key_Slash)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_greaterthanequal, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_idiaeresis, RALT(Key_K)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_F)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lessthanequal, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_multiply, RALT(Key_Comma)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Spacebar))) \ + OP(XKB_KEY_notequal, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_notsign, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_onesuperior, RALT(Key_Backtick)) \ + OP(XKB_KEY_oslash, RALT(Key_RightBracket)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_rightarrow, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_G)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threesuperior, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, RALT(Key_U)) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, Key_8) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_ydiaeresis, RALT(Key_Y)) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ml { +namespace fr_oss { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace fr_oss +} // namespace ml +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ml/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/ml/standard/keymap.h new file mode 100644 index 0000000000..d4550a205b --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ml/standard/keymap.h @@ -0,0 +1,582 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ml +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_RightBracket)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'µ', LSHIFT(Key_NonUsPound)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_Q))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'æ', RALT(Key_Q)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_Semicolon))) \ + OP(L'ŋ', RALT(Key_Semicolon)) \ + OP(L'Š', RALT(LSHIFT(Key_S))) \ + OP(L'š', RALT(Key_S)) \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ž', RALT(LSHIFT(Key_W))) \ + OP(L'ž', RALT(Key_W)) \ + OP(L'Ɔ', RALT(LSHIFT(Key_G))) \ + OP(L'Ɛ', RALT(LSHIFT(Key_E))) \ + OP(L'Ɲ', RALT(LSHIFT(Key_N))) \ + OP(L'ɔ', RALT(Key_G)) \ + OP(L'ɛ', RALT(Key_E)) \ + OP(L'ɲ', RALT(Key_N)) \ + OP(L'Ω', RALT(LSHIFT(Key_A))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_ae, RALT(Key_Q)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_RightBracket)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_M)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_M))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, Key_8) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ml { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace ml +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ml/us-intl/keymap.h b/src/kaleidoscope/host_keymap/linux/ml/us-intl/keymap.h new file mode 100644 index 0000000000..381031a75e --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ml/us-intl/keymap.h @@ -0,0 +1,578 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ml +// variant: us-intl + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_6))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_6))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_C))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_4))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_Minus)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsPound))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_LeftBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_NonUsPound)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_Semicolon))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_Semicolon)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_6)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_7)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_8)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(Key_Slash)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_A))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(LSHIFT(Key_Q))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Æ', RALT(LSHIFT(Key_Z))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_Comma))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'É', RALT(LSHIFT(Key_E))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(LSHIFT(Key_I))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ö', RALT(LSHIFT(Key_P))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Equals)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_L))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', RALT(LSHIFT(Key_U))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', RALT(LSHIFT(Key_Y))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'á', RALT(Key_A)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_Q)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'æ', RALT(Key_Z)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_Comma)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', RALT(Key_E)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', RALT(Key_I)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ö', RALT(Key_P)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Equals))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_L)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ú', RALT(Key_U)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', RALT(Key_Y)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_J))) \ + OP(L'ŋ', RALT(Key_J)) \ + OP(L'Œ', RALT(LSHIFT(Key_K))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_K)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Š', RALT(LSHIFT(Key_S))) \ + OP(L'š', RALT(Key_S)) \ + OP(L'Ž', RALT(LSHIFT(Key_X))) \ + OP(L'ž', RALT(Key_X)) \ + OP(L'Ɔ', RALT(LSHIFT(Key_O))) \ + OP(L'Ɛ', RALT(LSHIFT(Key_W))) \ + OP(L'Ɲ', RALT(LSHIFT(Key_H))) \ + OP(L'ɔ', RALT(Key_O)) \ + OP(L'ɛ', RALT(Key_W)) \ + OP(L'ɲ', RALT(Key_H)) \ + OP(L'‘', RALT(Key_9)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_0)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_LeftBracket))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_RightBracket))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_A)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_Q)) \ + OP(XKB_KEY_ae, RALT(Key_Z)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_Comma)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, RALT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Period)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(LSHIFT(Key_Minus))) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_9))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_5))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_Quote)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_2))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_Backtick) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, RALT(Key_E)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_9)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(Key_Equals)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, RALT(Key_P)) \ + OP(XKB_KEY_oe, RALT(Key_K)) \ + OP(XKB_KEY_onehalf, RALT(Key_7)) \ + OP(XKB_KEY_onequarter, RALT(Key_6)) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_oslash, RALT(Key_L)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_Semicolon)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_0)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threequarters, RALT(Key_8)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, RALT(Key_U)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_Y)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_Minus)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ml { +namespace us_intl { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace us_intl +} // namespace ml +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ml/us-mac/keymap.h b/src/kaleidoscope/host_keymap/linux/ml/us-mac/keymap.h new file mode 100644 index 0000000000..43dcb7232e --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ml/us-mac/keymap.h @@ -0,0 +1,588 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ml +// variant: us-mac + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_4)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(Key_Y)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', Key_NonUsBackslashAndPipe) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_U))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_G)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_9)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_NonUsPound)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_L)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_8))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'´', RALT(LSHIFT(Key_E))) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_7)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_9))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(Key_0)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_NonUsPound))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_Y))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'¾', RALT(LSHIFT(Key_M))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Slash))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_Quote))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Þ', RALT(LSHIFT(Key_L))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'æ', RALT(Key_Quote)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(LSHIFT(Key_D))) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(Key_Slash)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'þ', RALT(LSHIFT(Key_Semicolon))) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ı', RALT(LSHIFT(Key_B))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_K))) \ + OP(L'ŋ', RALT(Key_K)) \ + OP(L'Œ', RALT(LSHIFT(Key_Q))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_Q)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Š', RALT(LSHIFT(Key_S))) \ + OP(L'š', RALT(Key_S)) \ + OP(L'Ž', RALT(LSHIFT(Key_Z))) \ + OP(L'ž', RALT(Key_Z)) \ + OP(L'Ɔ', RALT(LSHIFT(Key_O))) \ + OP(L'Ɛ', RALT(LSHIFT(Key_A))) \ + OP(L'ƒ', RALT(Key_F)) /* U+0192, XKB_KEY_function, LATIN SMALL LETTER F WITH HOOK */ \ + OP(L'Ɲ', RALT(LSHIFT(Key_J))) \ + OP(L'ɔ', RALT(Key_O)) \ + OP(L'ɛ', RALT(Key_A)) \ + OP(L'ɲ', RALT(Key_J)) \ + OP(L'ˆ', RALT(LSHIFT(Key_I))) \ + OP(L'˜', RALT(LSHIFT(Key_N))) \ + OP(L'π', RALT(Key_P)) /* U+03c0, XKB_KEY_Greek_pi, GREEK SMALL LETTER PI */ \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Minus))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_RightBracket)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_RightBracket))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_0))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_LeftBracket)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_LeftBracket))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_W))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'†', RALT(Key_T)) /* U+2020, XKB_KEY_dagger, DAGGER */ \ + OP(L'‡', RALT(LSHIFT(Key_7))) /* U+2021, XKB_KEY_doubledagger, DOUBLE DAGGER */ \ + OP(L'•', RALT(Key_8)) /* U+2022, XKB_KEY_enfilledcircbullet, BULLET */ \ + OP(L'…', RALT(Key_Semicolon)) \ + OP(L'‰', RALT(LSHIFT(Key_R))) \ + OP(L'‹', RALT(LSHIFT(Key_3))) \ + OP(L'›', RALT(LSHIFT(Key_4))) \ + OP(L'⁄', RALT(LSHIFT(Key_1))) \ + OP(L'€', RALT(LSHIFT(Key_2))) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(Key_2)) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'∂', RALT(Key_D)) /* U+2202, XKB_KEY_partialderivative, PARTIAL DIFFERENTIAL */ \ + OP(L'∏', RALT(LSHIFT(Key_P))) \ + OP(L'∑', RALT(Key_W)) \ + OP(L'√', RALT(Key_V)) /* U+221a, XKB_KEY_squareroot, SQUARE ROOT */ \ + OP(L'∞', RALT(Key_5)) /* U+221e, XKB_KEY_infinity, INFINITY */ \ + OP(L'∫', RALT(Key_B)) /* U+222b, XKB_KEY_integral, INTEGRAL */ \ + OP(L'≈', RALT(Key_X)) /* U+2248, XKB_KEY_approxeq, ALMOST EQUAL TO */ \ + OP(L'≠', RALT(Key_Equals)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'≤', RALT(Key_Comma)) /* U+2264, XKB_KEY_lessthanequal, LESS-THAN OR EQUAL TO */ \ + OP(L'≥', RALT(Key_Period)) /* U+2265, XKB_KEY_greaterthanequal, GREATER-THAN OR EQUAL TO */ \ + OP(L'◊', RALT(LSHIFT(Key_V))) \ + OP(L'fi', RALT(LSHIFT(Key_5))) \ + OP(L'fl', RALT(LSHIFT(Key_6))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_pi, RALT(Key_P)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_L))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_ae, RALT(Key_Quote)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_approxeq, RALT(Key_X)) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(Key_4)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_G)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dagger, RALT(Key_T)) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_H)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, RALT(Key_E)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(LSHIFT(Key_H))) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_T))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_I)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_U)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_G))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_Backtick)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_F))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_Comma))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_X))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_N)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_division, RALT(Key_Slash)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubledagger, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_enfilledcircbullet, RALT(Key_8)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_function, RALT(Key_F)) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_greaterthanequal, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_infinity, RALT(Key_5)) \ + OP(XKB_KEY_integral, RALT(Key_B)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_RightBracket)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_lessthanequal, RALT(Key_Comma)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(Key_0)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notequal, RALT(Key_Equals)) \ + OP(XKB_KEY_notsign, RALT(Key_L)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oe, RALT(Key_Q)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_9)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_7)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_partialderivative, RALT(Key_D)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_squareroot, RALT(Key_V)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_trademark, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_Y)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ml { +namespace us_mac { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace us_mac +} // namespace ml +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/mm/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/mm/standard/keymap.h new file mode 100644 index 0000000000..f0b5f995a5 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/mm/standard/keymap.h @@ -0,0 +1,303 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: mm +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'က', Key_U) \ + OP(L'ခ', Key_C) \ + OP(L'ဂ', LSHIFT(Key_Semicolon)) \ + OP(L'ဃ', LSHIFT(Key_C)) \ + OP(L'င', Key_I) \ + OP(L'စ', Key_P) \ + OP(L'ဆ', Key_Q) \ + OP(L'ဇ', LSHIFT(Key_Z)) \ + OP(L'ဈ', LSHIFT(Key_Q)) \ + OP(L'ဉ', LSHIFT(Key_N)) \ + OP(L'ည', Key_N) \ + OP(L'ဋ', LSHIFT(Key_3)) \ + OP(L'ဌ', LSHIFT(Key_X)) \ + OP(L'ဍ', LSHIFT(Key_1)) \ + OP(L'ဎ', LSHIFT(Key_Backtick)) \ + OP(L'ဏ', LSHIFT(Key_P)) \ + OP(L'တ', Key_W) \ + OP(L'ထ', Key_X) \ + OP(L'ဒ', LSHIFT(Key_K)) \ + OP(L'ဓ', LSHIFT(Key_L)) \ + OP(L'န', Key_E) \ + OP(L'ပ', Key_Y) \ + OP(L'ဖ', Key_Z) \ + OP(L'ဗ', LSHIFT(Key_A)) \ + OP(L'ဘ', Key_B) \ + OP(L'မ', Key_R) \ + OP(L'ယ', LSHIFT(Key_B)) \ + OP(L'ရ', LSHIFT(Key_7)) \ + OP(L'လ', Key_V) \ + OP(L'ဝ', LSHIFT(Key_W)) \ + OP(L'သ', Key_O) \ + OP(L'ဟ', Key_LeftBracket) \ + OP(L'ဠ', LSHIFT(Key_V)) \ + OP(L'အ', Key_T) \ + OP(L'ဣ', LSHIFT(Key_E)) \ + OP(L'ဤ', LSHIFT(Key_T)) \ + OP(L'ဥ', LSHIFT(Key_U)) \ + OP(L'ဦ', LSHIFT(Key_M)) \ + OP(L'ဧ', LSHIFT(Key_LeftBracket)) \ + OP(L'ဩ', Key_RightBracket) \ + OP(L'ဪ', LSHIFT(Key_RightBracket)) \ + OP(L'ါ', Key_G) \ + OP(L'ာ', Key_M) \ + OP(L'ိ', Key_D) \ + OP(L'ီ', LSHIFT(Key_D)) \ + OP(L'ု', Key_K) \ + OP(L'ူ', Key_L) \ + OP(L'ေ', Key_A) \ + OP(L'ဲ', LSHIFT(Key_J)) \ + OP(L'ံ', LSHIFT(Key_H)) \ + OP(L'့', Key_H) \ + OP(L'း', Key_Semicolon) \ + OP(L'္', LSHIFT(Key_F)) \ + OP(L'်', Key_F) \ + OP(L'ျ', Key_S) \ + OP(L'ြ', Key_J) \ + OP(L'ွ', LSHIFT(Key_G)) \ + OP(L'ှ', LSHIFT(Key_S)) \ + OP(L'ဿ', LSHIFT(Key_O)) \ + OP(L'၀', Key_0) \ + OP(L'၁', Key_1) \ + OP(L'၂', Key_2) \ + OP(L'၃', Key_3) \ + OP(L'၄', Key_4) \ + OP(L'၅', Key_5) \ + OP(L'၆', Key_6) \ + OP(L'၇', Key_7) \ + OP(L'၈', Key_8) \ + OP(L'၉', Key_9) \ + OP(L'၊', LSHIFT(Key_Comma)) \ + OP(L'။', LSHIFT(Key_Period)) \ + OP(L'၌', LSHIFT(Key_Y)) \ + OP(L'၍', LSHIFT(Key_I)) \ + OP(L'၎', LSHIFT(Key_R)) \ + OP(L'၏', Key_NonUsPound) \ + OP(L'ၐ', Key_Backtick) \ + OP(L'ၑ', LSHIFT(Key_NonUsPound)) \ + OP(L'ၒ', LSHIFT(Key_2)) \ + OP(L'ၓ', LSHIFT(Key_4)) \ + OP(L'ၔ', LSHIFT(Key_5)) \ + OP(L'ၕ', LSHIFT(Key_6)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace mm { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace mm +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/mn/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/mn/standard/keymap.h new file mode 100644 index 0000000000..cba85a4a18 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/mn/standard/keymap.h @@ -0,0 +1,463 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: mn +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_NonUsPound) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_3)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('$', RALT(Key_D)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_9)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Q)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_NonUsBackslashAndPipe) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_8)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_6)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_5)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', RALT(Key_N)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Backtick) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_M)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_0)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('L', RALT(Key_Equals)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('X', RALT(Key_Minus)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('[', RALT(Key_9)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Slash)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_0)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_7)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_W)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', RALT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_NonUsPound) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_3)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'$', RALT(Key_D)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_9)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Q)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_NonUsBackslashAndPipe) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_8)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_6)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_5)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', RALT(Key_N)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Backtick) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_M)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_0)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'L', RALT(Key_Equals)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'X', RALT(Key_Minus)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'[', RALT(Key_9)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Slash)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_0)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_7)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_W)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', RALT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'£', RALT(Key_S)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(Key_Y)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_Semicolon)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Comma)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_4)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_3)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_A)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'»', RALT(Key_Period)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', RALT(Key_1)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(Key_2)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ё', LSHIFT(Key_C)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_G)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_D)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_Period)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_Semicolon)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_Minus)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_R)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_N)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_A)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_LeftBracket)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_B)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_K)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_Quote)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_J)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_V)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_M)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_Q)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_H)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_Equals)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_Comma)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_T)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Slash)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_G) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_D) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_Period) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_Semicolon) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_Minus) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_R) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_N) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_A) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_LeftBracket) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_B) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_K) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_Quote) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_J) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_V) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_M) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_Q) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_H) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_Equals) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_Comma) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_T) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Slash) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_C) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'Ү', LSHIFT(Key_O)) /* U+04ae, XKB_KEY_Cyrillic_U_straight, CYRILLIC CAPITAL LETTER STRAIGHT U */ \ + OP(L'ү', Key_O) /* U+04af, XKB_KEY_Cyrillic_u_straight, CYRILLIC SMALL LETTER STRAIGHT U */ \ + OP(L'Ө', LSHIFT(Key_F)) /* U+04e8, XKB_KEY_Cyrillic_O_bar, CYRILLIC CAPITAL LETTER BARRED O */ \ + OP(L'ө', Key_F) /* U+04e9, XKB_KEY_Cyrillic_o_bar, CYRILLIC SMALL LETTER BARRED O */ \ + OP(L'–', RALT(Key_X)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Z)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'“', RALT(Key_I)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_O)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_U)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_Quote)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'₮', LSHIFT(Key_4)) \ + OP(L'№', LSHIFT(Key_1)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + OP(L'™', RALT(Key_T)) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'≠', RALT(Key_6)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_O_bar, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_U_straight, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_a, Key_G) \ + OP(XKB_KEY_Cyrillic_be, Key_D) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_e, Key_T) \ + OP(XKB_KEY_Cyrillic_ef, Key_Q) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_B) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_J) \ + OP(XKB_KEY_Cyrillic_es, Key_V) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_H) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_N) \ + OP(XKB_KEY_Cyrillic_ie, Key_Minus) \ + OP(XKB_KEY_Cyrillic_io, Key_C) \ + OP(XKB_KEY_Cyrillic_ka, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_o, Key_K) \ + OP(XKB_KEY_Cyrillic_o_bar, Key_F) \ + OP(XKB_KEY_Cyrillic_pe, Key_Quote) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_Equals) \ + OP(XKB_KEY_Cyrillic_shorti, Key_A) \ + OP(XKB_KEY_Cyrillic_softsign, Key_Comma) \ + OP(XKB_KEY_Cyrillic_te, Key_M) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_u_straight, Key_O) \ + OP(XKB_KEY_Cyrillic_ve, Key_Period) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Slash) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_R) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, RALT(Key_Equals)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_X, RALT(Key_Minus)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, RALT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Q)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, RALT(Key_8)) \ + OP(XKB_KEY_backslash, RALT(Key_Slash)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, RALT(Key_9)) \ + OP(XKB_KEY_bracketright, RALT(Key_0)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_5)) \ + OP(XKB_KEY_comma, LSHIFT(Key_8)) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_degree, RALT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(Key_2)) \ + OP(XKB_KEY_dollar, RALT(Key_D)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_U)) \ + OP(XKB_KEY_ellipsis, RALT(Key_Quote)) \ + OP(XKB_KEY_emdash, RALT(Key_Z)) \ + OP(XKB_KEY_endash, RALT(Key_X)) \ + OP(XKB_KEY_equal, Key_Backtick) \ + OP(XKB_KEY_exclam, Key_NonUsPound) \ + OP(XKB_KEY_grave, RALT(Key_W)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_M)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Comma)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Period)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_I)) \ + OP(XKB_KEY_less, RALT(Key_N)) \ + OP(XKB_KEY_minus, LSHIFT(Key_2)) \ + OP(XKB_KEY_mu, RALT(Key_A)) \ + OP(XKB_KEY_multiply, RALT(Key_1)) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notequal, RALT(Key_6)) \ + OP(XKB_KEY_notsign, RALT(Key_4)) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_1)) \ + OP(XKB_KEY_parenleft, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_parenright, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_percent, LSHIFT(Key_9)) \ + OP(XKB_KEY_period, LSHIFT(Key_6)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_plusminus, RALT(Key_3)) \ + OP(XKB_KEY_question, LSHIFT(Key_0)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_3)) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_O)) \ + OP(XKB_KEY_section, RALT(Key_Semicolon)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_S)) \ + OP(XKB_KEY_trademark, RALT(Key_T)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_7)) \ + OP(XKB_KEY_yen, RALT(Key_Y)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace mn { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace mn +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/mt/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/mt/standard/keymap.h new file mode 100644 index 0000000000..1b2d8700b3 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/mt/standard/keymap.h @@ -0,0 +1,584 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: mt +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_NonUsPound) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_Backtick))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', RALT(LSHIFT(Key_A))) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'È', RALT(LSHIFT(Key_E))) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'Ì', RALT(LSHIFT(Key_I))) /* U+00cc, XKB_KEY_Igrave, LATIN CAPITAL LETTER I WITH GRAVE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ò', RALT(LSHIFT(Key_O))) /* U+00d2, XKB_KEY_Ograve, LATIN CAPITAL LETTER O WITH GRAVE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ù', RALT(LSHIFT(Key_U))) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', RALT(Key_A)) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'è', RALT(Key_E)) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'ì', RALT(Key_I)) /* U+00ec, XKB_KEY_igrave, LATIN SMALL LETTER I WITH GRAVE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ò', RALT(Key_O)) /* U+00f2, XKB_KEY_ograve, LATIN SMALL LETTER O WITH GRAVE */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ù', RALT(Key_U)) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ċ', LSHIFT(Key_Backtick)) /* U+010a, XKB_KEY_Cabovedot, LATIN CAPITAL LETTER C WITH DOT ABOVE */ \ + OP(L'ċ', Key_Backtick) /* U+010b, XKB_KEY_cabovedot, LATIN SMALL LETTER C WITH DOT ABOVE */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ġ', LSHIFT(Key_LeftBracket)) /* U+0120, XKB_KEY_Gabovedot, LATIN CAPITAL LETTER G WITH DOT ABOVE */ \ + OP(L'ġ', Key_LeftBracket) /* U+0121, XKB_KEY_gabovedot, LATIN SMALL LETTER G WITH DOT ABOVE */ \ + OP(L'Ħ', LSHIFT(Key_RightBracket)) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', Key_RightBracket) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ż', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+017b, XKB_KEY_Zabovedot, LATIN CAPITAL LETTER Z WITH DOT ABOVE */ \ + OP(L'ż', Key_NonUsBackslashAndPipe) /* U+017c, XKB_KEY_zabovedot, LATIN SMALL LETTER Z WITH DOT ABOVE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', LSHIFT(Key_3)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Agrave, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cabovedot, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Egrave, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, LSHIFT(Key_3)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gabovedot, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Igrave, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Ograve, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ugrave, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zabovedot, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_agrave, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cabovedot, Key_Backtick) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_egrave, RALT(Key_E)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gabovedot, Key_LeftBracket) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, Key_RightBracket) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_igrave, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_numbersign, Key_NonUsPound) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ograve, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zabovedot, Key_NonUsBackslashAndPipe) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace mt { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace mt +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/mt/us/keymap.h b/src/kaleidoscope/host_keymap/linux/mt/us/keymap.h new file mode 100644 index 0000000000..612a0ab347 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/mt/us/keymap.h @@ -0,0 +1,580 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: mt +// variant: us + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(LSHIFT(Key_NonUsPound))) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(LSHIFT(Key_NonUsPound))) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', RALT(LSHIFT(Key_A))) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'È', RALT(LSHIFT(Key_E))) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'Ì', RALT(LSHIFT(Key_I))) /* U+00cc, XKB_KEY_Igrave, LATIN CAPITAL LETTER I WITH GRAVE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ò', RALT(LSHIFT(Key_O))) /* U+00d2, XKB_KEY_Ograve, LATIN CAPITAL LETTER O WITH GRAVE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ù', RALT(LSHIFT(Key_U))) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', RALT(Key_A)) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'è', RALT(Key_E)) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'ì', RALT(Key_I)) /* U+00ec, XKB_KEY_igrave, LATIN SMALL LETTER I WITH GRAVE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ò', RALT(Key_O)) /* U+00f2, XKB_KEY_ograve, LATIN SMALL LETTER O WITH GRAVE */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ù', RALT(Key_U)) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ċ', LSHIFT(Key_Backtick)) /* U+010a, XKB_KEY_Cabovedot, LATIN CAPITAL LETTER C WITH DOT ABOVE */ \ + OP(L'ċ', Key_Backtick) /* U+010b, XKB_KEY_cabovedot, LATIN SMALL LETTER C WITH DOT ABOVE */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ġ', LSHIFT(Key_LeftBracket)) /* U+0120, XKB_KEY_Gabovedot, LATIN CAPITAL LETTER G WITH DOT ABOVE */ \ + OP(L'ġ', Key_LeftBracket) /* U+0121, XKB_KEY_gabovedot, LATIN SMALL LETTER G WITH DOT ABOVE */ \ + OP(L'Ħ', LSHIFT(Key_RightBracket)) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', Key_RightBracket) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ż', LSHIFT(Key_NonUsPound)) /* U+017b, XKB_KEY_Zabovedot, LATIN CAPITAL LETTER Z WITH DOT ABOVE */ \ + OP(L'ż', Key_NonUsPound) /* U+017c, XKB_KEY_zabovedot, LATIN SMALL LETTER Z WITH DOT ABOVE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', LSHIFT(Key_3)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Agrave, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cabovedot, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Egrave, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, LSHIFT(Key_3)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gabovedot, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Igrave, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Ograve, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ugrave, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zabovedot, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_agrave, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cabovedot, Key_Backtick) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_egrave, RALT(Key_E)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gabovedot, Key_LeftBracket) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, Key_RightBracket) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_igrave, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ograve, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zabovedot, Key_NonUsPound) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace mt { +namespace us { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace us +} // namespace mt +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/mv/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/mv/standard/keymap.h new file mode 100644 index 0000000000..d375fc6717 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/mv/standard/keymap.h @@ -0,0 +1,337 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: mv +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'×', Key_X) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', LSHIFT(Key_P)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'،', Key_Comma) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ހ', Key_H) \ + OP(L'ށ', LSHIFT(Key_S)) \ + OP(L'ނ', Key_N) \ + OP(L'ރ', Key_R) \ + OP(L'ބ', Key_B) \ + OP(L'ޅ', LSHIFT(Key_L)) \ + OP(L'ކ', Key_K) \ + OP(L'އ', Key_W) \ + OP(L'ވ', Key_V) \ + OP(L'މ', Key_M) \ + OP(L'ފ', Key_F) \ + OP(L'ދ', Key_D) \ + OP(L'ތ', Key_T) \ + OP(L'ލ', Key_L) \ + OP(L'ގ', Key_G) \ + OP(L'ޏ', LSHIFT(Key_N)) \ + OP(L'ސ', Key_S) \ + OP(L'ޑ', LSHIFT(Key_D)) \ + OP(L'ޒ', Key_Z) \ + OP(L'ޓ', LSHIFT(Key_T)) \ + OP(L'ޔ', Key_Y) \ + OP(L'ޕ', Key_P) \ + OP(L'ޖ', Key_J) \ + OP(L'ޗ', Key_C) \ + OP(L'ޘ', LSHIFT(Key_X)) \ + OP(L'ޙ', LSHIFT(Key_H)) \ + OP(L'ޚ', LSHIFT(Key_K)) \ + OP(L'ޛ', LSHIFT(Key_J)) \ + OP(L'ޜ', LSHIFT(Key_R)) \ + OP(L'ޝ', LSHIFT(Key_C)) \ + OP(L'ޞ', LSHIFT(Key_B)) \ + OP(L'ޟ', LSHIFT(Key_M)) \ + OP(L'ޠ', LSHIFT(Key_Y)) \ + OP(L'ޡ', LSHIFT(Key_Z)) \ + OP(L'ޢ', LSHIFT(Key_W)) \ + OP(L'ޣ', LSHIFT(Key_G)) \ + OP(L'ޤ', LSHIFT(Key_Q)) \ + OP(L'ޥ', LSHIFT(Key_V)) \ + OP(L'ަ', Key_A) \ + OP(L'ާ', LSHIFT(Key_A)) \ + OP(L'ި', Key_I) \ + OP(L'ީ', LSHIFT(Key_I)) \ + OP(L'ު', Key_U) \ + OP(L'ޫ', LSHIFT(Key_U)) \ + OP(L'ެ', Key_E) \ + OP(L'ޭ', LSHIFT(Key_E)) \ + OP(L'ޮ', Key_O) \ + OP(L'ޯ', LSHIFT(Key_O)) \ + OP(L'ް', Key_Q) \ + OP(L'ﷲ', LSHIFT(Key_F)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_Arabic_comma, Key_Comma) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_division, LSHIFT(Key_P)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, Key_X) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace mv { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace mv +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/my/phonetic/keymap.h b/src/kaleidoscope/host_keymap/linux/my/phonetic/keymap.h new file mode 100644 index 0000000000..a89f747d50 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/my/phonetic/keymap.h @@ -0,0 +1,360 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: my +// variant: phonetic + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', LSHIFT(Key_Period)) /* U+003c, XKB_KEY_leftcaret, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Comma)) /* U+003e, XKB_KEY_rightcaret, GREATER-THAN SIGN */ \ + OP('[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_LeftBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', LSHIFT(Key_Period)) /* U+003c, XKB_KEY_leftcaret, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Comma)) /* U+003e, XKB_KEY_rightcaret, GREATER-THAN SIGN */ \ + OP(L'[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_LeftBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_LeftBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'،', Key_Comma) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', Key_Semicolon) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', LSHIFT(Key_2)) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'آ', LSHIFT(Key_4)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_3)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', LSHIFT(Key_7)) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_5)) /* U+0625, XKB_KEY_Arabic_hamzaunderalef, ARABIC LETTER ALEF WITH HAMZA BELOW */ \ + OP(L'ئ', LSHIFT(Key_6)) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', Key_A) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_B) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', LSHIFT(Key_T)) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_T) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ج', Key_J) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', LSHIFT(Key_H)) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_X) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_D) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', LSHIFT(Key_Z)) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_R) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_Z) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', LSHIFT(Key_S)) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ض', LSHIFT(Key_D)) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', LSHIFT(Key_U)) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', LSHIFT(Key_V)) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', Key_E) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', LSHIFT(Key_E)) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_I)) \ + OP(L'ف', Key_F) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_Q) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', Key_K) /* U+0643, XKB_KEY_Arabic_kaf, ARABIC LETTER KAF */ \ + OP(L'ل', Key_L) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_M) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_N) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_H) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_W) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', LSHIFT(Key_Y)) /* U+0649, XKB_KEY_Arabic_alefmaksura, ARABIC LETTER ALEF MAKSURA */ \ + OP(L'ي', Key_Y) /* U+064a, XKB_KEY_Arabic_yeh, ARABIC LETTER YEH */ \ + OP(L'ّ', LSHIFT(Key_W)) /* U+0651, XKB_KEY_Arabic_shadda, ARABIC SHADDA */ \ + OP(L'٠', Key_0) /* U+0660, XKB_KEY_Arabic_0, ARABIC-INDIC DIGIT ZERO */ \ + OP(L'١', Key_1) /* U+0661, XKB_KEY_Arabic_1, ARABIC-INDIC DIGIT ONE */ \ + OP(L'٢', Key_2) /* U+0662, XKB_KEY_Arabic_2, ARABIC-INDIC DIGIT TWO */ \ + OP(L'٣', Key_3) /* U+0663, XKB_KEY_Arabic_3, ARABIC-INDIC DIGIT THREE */ \ + OP(L'٤', Key_4) /* U+0664, XKB_KEY_Arabic_4, ARABIC-INDIC DIGIT FOUR */ \ + OP(L'٥', Key_5) /* U+0665, XKB_KEY_Arabic_5, ARABIC-INDIC DIGIT FIVE */ \ + OP(L'٦', Key_6) /* U+0666, XKB_KEY_Arabic_6, ARABIC-INDIC DIGIT SIX */ \ + OP(L'٧', Key_7) /* U+0667, XKB_KEY_Arabic_7, ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'٨', Key_8) /* U+0668, XKB_KEY_Arabic_8, ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'٩', Key_9) /* U+0669, XKB_KEY_Arabic_9, ARABIC-INDIC DIGIT NINE */ \ + OP(L'پ', LSHIFT(Key_B)) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', Key_C) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ڠ', LSHIFT(Key_G)) \ + OP(L'ڤ', Key_P) /* U+06a4, XKB_KEY_Arabic_veh, ARABIC LETTER VEH */ \ + OP(L'ڬ', Key_G) \ + OP(L'ڽ', LSHIFT(Key_N)) \ + OP(L'ۏ', Key_V) \ + OP(L'‌', LSHIFT(Key_O)) \ + OP(L'ﺹ', LSHIFT(Key_C)) \ + OP(L'ﻻ', LSHIFT(Key_L)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_0)) \ + OP(XKB_KEY_1, RALT(Key_1)) \ + OP(XKB_KEY_2, RALT(Key_2)) \ + OP(XKB_KEY_3, RALT(Key_3)) \ + OP(XKB_KEY_4, RALT(Key_4)) \ + OP(XKB_KEY_5, RALT(Key_5)) \ + OP(XKB_KEY_6, RALT(Key_6)) \ + OP(XKB_KEY_7, RALT(Key_7)) \ + OP(XKB_KEY_8, RALT(Key_8)) \ + OP(XKB_KEY_9, RALT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_0, Key_0) \ + OP(XKB_KEY_Arabic_1, Key_1) \ + OP(XKB_KEY_Arabic_2, Key_2) \ + OP(XKB_KEY_Arabic_3, Key_3) \ + OP(XKB_KEY_Arabic_4, Key_4) \ + OP(XKB_KEY_Arabic_5, Key_5) \ + OP(XKB_KEY_Arabic_6, Key_6) \ + OP(XKB_KEY_Arabic_7, Key_7) \ + OP(XKB_KEY_Arabic_8, Key_8) \ + OP(XKB_KEY_Arabic_9, Key_9) \ + OP(XKB_KEY_Arabic_ain, Key_E) \ + OP(XKB_KEY_Arabic_alef, Key_A) \ + OP(XKB_KEY_Arabic_alefmaksura, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Arabic_beh, Key_B) \ + OP(XKB_KEY_Arabic_comma, Key_Comma) \ + OP(XKB_KEY_Arabic_dad, LSHIFT(Key_D)) \ + OP(XKB_KEY_Arabic_dal, Key_D) \ + OP(XKB_KEY_Arabic_feh, Key_F) \ + OP(XKB_KEY_Arabic_ghain, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_ha, Key_H) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_hamza, LSHIFT(Key_2)) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_3)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, LSHIFT(Key_7)) \ + OP(XKB_KEY_Arabic_hamzaonyeh, LSHIFT(Key_6)) \ + OP(XKB_KEY_Arabic_hamzaunderalef, LSHIFT(Key_5)) \ + OP(XKB_KEY_Arabic_jeem, Key_J) \ + OP(XKB_KEY_Arabic_kaf, Key_K) \ + OP(XKB_KEY_Arabic_khah, Key_X) \ + OP(XKB_KEY_Arabic_lam, Key_L) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_4)) \ + OP(XKB_KEY_Arabic_meem, Key_M) \ + OP(XKB_KEY_Arabic_noon, Key_N) \ + OP(XKB_KEY_Arabic_peh, LSHIFT(Key_B)) \ + OP(XKB_KEY_Arabic_qaf, Key_Q) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_R) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, Key_Semicolon) \ + OP(XKB_KEY_Arabic_shadda, LSHIFT(Key_W)) \ + OP(XKB_KEY_Arabic_sheen, LSHIFT(Key_S)) \ + OP(XKB_KEY_Arabic_tah, LSHIFT(Key_U)) \ + OP(XKB_KEY_Arabic_tcheh, Key_C) \ + OP(XKB_KEY_Arabic_teh, Key_T) \ + OP(XKB_KEY_Arabic_tehmarbuta, LSHIFT(Key_T)) \ + OP(XKB_KEY_Arabic_thal, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Arabic_veh, Key_P) \ + OP(XKB_KEY_Arabic_waw, Key_W) \ + OP(XKB_KEY_Arabic_yeh, Key_Y) \ + OP(XKB_KEY_Arabic_zah, LSHIFT(Key_V)) \ + OP(XKB_KEY_Arabic_zain, Key_Z) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketleft, Key_RightBracket) \ + OP(XKB_KEY_bracketright, Key_LeftBracket) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_leftcaret, LSHIFT(Key_Period)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_rightcaret, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace my { +namespace phonetic { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace phonetic +} // namespace my +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/my/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/my/standard/keymap.h new file mode 100644 index 0000000000..32f58a3258 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/my/standard/keymap.h @@ -0,0 +1,399 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: my +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_M)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', RALT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_M)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', RALT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', LSHIFT(Key_O)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', LSHIFT(Key_I)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'،', LSHIFT(Key_K)) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', LSHIFT(Key_P)) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', Key_X) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'آ', LSHIFT(Key_N)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_H)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', Key_C) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_Y)) /* U+0625, XKB_KEY_Arabic_hamzaunderalef, ARABIC LETTER ALEF WITH HAMZA BELOW */ \ + OP(L'ئ', Key_Z) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', Key_H) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_F) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', Key_M) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_J) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', Key_E) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_LeftBracket) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'خ', Key_O) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_RightBracket) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ر', Key_V) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_Period) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', Key_A) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', Key_W) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', Key_Q) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', Key_Quote) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', Key_Slash) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', Key_U) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', Key_Y) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_R)) \ + OP(L'ف', Key_T) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_R) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ل', Key_G) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_L) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_K) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_I) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_Comma) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', Key_N) /* U+0649, XKB_KEY_Arabic_alefmaksura, ARABIC LETTER ALEF MAKSURA */ \ + OP(L'ي', Key_D) /* U+064a, XKB_KEY_Arabic_yeh, ARABIC LETTER YEH */ \ + OP(L'٠', Key_0) /* U+0660, XKB_KEY_Arabic_0, ARABIC-INDIC DIGIT ZERO */ \ + OP(L'١', Key_1) /* U+0661, XKB_KEY_Arabic_1, ARABIC-INDIC DIGIT ONE */ \ + OP(L'٢', Key_2) /* U+0662, XKB_KEY_Arabic_2, ARABIC-INDIC DIGIT TWO */ \ + OP(L'٣', Key_3) /* U+0663, XKB_KEY_Arabic_3, ARABIC-INDIC DIGIT THREE */ \ + OP(L'٤', Key_4) /* U+0664, XKB_KEY_Arabic_4, ARABIC-INDIC DIGIT FOUR */ \ + OP(L'٥', Key_5) /* U+0665, XKB_KEY_Arabic_5, ARABIC-INDIC DIGIT FIVE */ \ + OP(L'٦', Key_6) /* U+0666, XKB_KEY_Arabic_6, ARABIC-INDIC DIGIT SIX */ \ + OP(L'٧', Key_7) /* U+0667, XKB_KEY_Arabic_7, ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'٨', Key_8) /* U+0668, XKB_KEY_Arabic_8, ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'٩', Key_9) /* U+0669, XKB_KEY_Arabic_9, ARABIC-INDIC DIGIT NINE */ \ + OP(L'٪', LSHIFT(Key_5)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'پ', RALT(Key_F)) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', LSHIFT(Key_Q)) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ڠ', LSHIFT(Key_W)) \ + OP(L'ڤ', RALT(Key_T)) /* U+06a4, XKB_KEY_Arabic_veh, ARABIC LETTER VEH */ \ + OP(L'ڨ', LSHIFT(Key_S)) \ + OP(L'ک', Key_P) /* U+06a9, XKB_KEY_Arabic_keheh, ARABIC LETTER KEHEH */ \ + OP(L'ڬ', LSHIFT(Key_E)) \ + OP(L'گ', RALT(Key_Semicolon)) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'ڽ', LSHIFT(Key_X)) \ + OP(L'ۏ', LSHIFT(Key_A)) \ + OP(L'‌', LSHIFT(Key_Comma)) \ + OP(L'ﻵ', LSHIFT(Key_B)) \ + OP(L'ﻷ', LSHIFT(Key_G)) \ + OP(L'ﻹ', LSHIFT(Key_T)) \ + OP(L'ﻻ', Key_B) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_0)) \ + OP(XKB_KEY_1, RALT(Key_1)) \ + OP(XKB_KEY_2, RALT(Key_2)) \ + OP(XKB_KEY_3, RALT(Key_3)) \ + OP(XKB_KEY_4, RALT(Key_4)) \ + OP(XKB_KEY_5, RALT(Key_5)) \ + OP(XKB_KEY_6, RALT(Key_6)) \ + OP(XKB_KEY_7, RALT(Key_7)) \ + OP(XKB_KEY_8, RALT(Key_8)) \ + OP(XKB_KEY_9, RALT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_0, Key_0) \ + OP(XKB_KEY_Arabic_1, Key_1) \ + OP(XKB_KEY_Arabic_2, Key_2) \ + OP(XKB_KEY_Arabic_3, Key_3) \ + OP(XKB_KEY_Arabic_4, Key_4) \ + OP(XKB_KEY_Arabic_5, Key_5) \ + OP(XKB_KEY_Arabic_6, Key_6) \ + OP(XKB_KEY_Arabic_7, Key_7) \ + OP(XKB_KEY_Arabic_8, Key_8) \ + OP(XKB_KEY_Arabic_9, Key_9) \ + OP(XKB_KEY_Arabic_ain, Key_U) \ + OP(XKB_KEY_Arabic_alef, Key_H) \ + OP(XKB_KEY_Arabic_alefmaksura, Key_N) \ + OP(XKB_KEY_Arabic_beh, Key_F) \ + OP(XKB_KEY_Arabic_comma, LSHIFT(Key_K)) \ + OP(XKB_KEY_Arabic_dad, Key_Q) \ + OP(XKB_KEY_Arabic_dal, Key_RightBracket) \ + OP(XKB_KEY_Arabic_feh, Key_T) \ + OP(XKB_KEY_Arabic_gaf, RALT(Key_Semicolon)) \ + OP(XKB_KEY_Arabic_ghain, Key_Y) \ + OP(XKB_KEY_Arabic_ha, Key_I) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hamza, Key_X) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, Key_C) \ + OP(XKB_KEY_Arabic_hamzaonyeh, Key_Z) \ + OP(XKB_KEY_Arabic_hamzaunderalef, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Arabic_jeem, Key_LeftBracket) \ + OP(XKB_KEY_Arabic_keheh, Key_P) \ + OP(XKB_KEY_Arabic_khah, Key_O) \ + OP(XKB_KEY_Arabic_lam, Key_G) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_meem, Key_L) \ + OP(XKB_KEY_Arabic_noon, Key_K) \ + OP(XKB_KEY_Arabic_peh, RALT(Key_F)) \ + OP(XKB_KEY_Arabic_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_Arabic_qaf, Key_R) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_V) \ + OP(XKB_KEY_Arabic_sad, Key_W) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, LSHIFT(Key_P)) \ + OP(XKB_KEY_Arabic_sheen, Key_A) \ + OP(XKB_KEY_Arabic_tah, Key_Quote) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_J)) \ + OP(XKB_KEY_Arabic_tcheh, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Arabic_teh, Key_J) \ + OP(XKB_KEY_Arabic_tehmarbuta, Key_M) \ + OP(XKB_KEY_Arabic_theh, Key_E) \ + OP(XKB_KEY_Arabic_veh, RALT(Key_T)) \ + OP(XKB_KEY_Arabic_waw, Key_Comma) \ + OP(XKB_KEY_Arabic_yeh, Key_D) \ + OP(XKB_KEY_Arabic_zah, Key_Slash) \ + OP(XKB_KEY_Arabic_zain, Key_Period) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_M)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Z)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_V)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_C)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_F)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_D)) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, RALT(Key_Comma)) \ + OP(XKB_KEY_division, LSHIFT(Key_I)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, LSHIFT(Key_U)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_less, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, LSHIFT(Key_O)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_period, LSHIFT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_slash, LSHIFT(Key_L)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace my { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace my +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/nec_vndr/jp/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/nec_vndr/jp/standard/keymap.h new file mode 100644 index 0000000000..0038c7a57e --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/nec_vndr/jp/standard/keymap.h @@ -0,0 +1,515 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: nec_vndr/jp +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(' ', Key_Home) /* XKB_KEY_Clear */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Quote) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_Minus)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_LeftBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', Key_Equals) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('}', LSHIFT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_LeftBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L' ', Key_Home) /* XKB_KEY_Clear */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Quote) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_Minus)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_LeftBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L']', Key_NonUsPound) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', Key_Equals) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_RightBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'}', LSHIFT(Key_NonUsPound)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_LeftBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'゛', RALT(Key_LeftBracket)) /* U+309b, XKB_KEY_voicedsound, KATAKANA-HIRAGANA VOICED SOUND MARK */ \ + OP(L'゜', RALT(Key_RightBracket)) /* U+309c, XKB_KEY_semivoicedsound, KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */ \ + OP(L'ア', RALT(Key_3)) /* U+30a2, XKB_KEY_kana_A, KATAKANA LETTER A */ \ + OP(L'イ', RALT(Key_E)) /* U+30a4, XKB_KEY_kana_I, KATAKANA LETTER I */ \ + OP(L'ウ', RALT(Key_4)) /* U+30a6, XKB_KEY_kana_U, KATAKANA LETTER U */ \ + OP(L'エ', RALT(Key_5)) /* U+30a8, XKB_KEY_kana_E, KATAKANA LETTER E */ \ + OP(L'オ', RALT(Key_6)) /* U+30aa, XKB_KEY_kana_O, KATAKANA LETTER O */ \ + OP(L'カ', RALT(Key_T)) /* U+30ab, XKB_KEY_kana_KA, KATAKANA LETTER KA */ \ + OP(L'キ', RALT(Key_G)) /* U+30ad, XKB_KEY_kana_KI, KATAKANA LETTER KI */ \ + OP(L'ク', RALT(Key_H)) /* U+30af, XKB_KEY_kana_KU, KATAKANA LETTER KU */ \ + OP(L'ケ', RALT(Key_Quote)) /* U+30b1, XKB_KEY_kana_KE, KATAKANA LETTER KE */ \ + OP(L'コ', RALT(Key_B)) /* U+30b3, XKB_KEY_kana_KO, KATAKANA LETTER KO */ \ + OP(L'サ', RALT(Key_X)) /* U+30b5, XKB_KEY_kana_SA, KATAKANA LETTER SA */ \ + OP(L'シ', RALT(Key_D)) /* U+30b7, XKB_KEY_kana_SHI, KATAKANA LETTER SI */ \ + OP(L'ス', RALT(Key_R)) /* U+30b9, XKB_KEY_kana_SU, KATAKANA LETTER SU */ \ + OP(L'セ', RALT(Key_P)) /* U+30bb, XKB_KEY_kana_SE, KATAKANA LETTER SE */ \ + OP(L'ソ', RALT(Key_C)) /* U+30bd, XKB_KEY_kana_SO, KATAKANA LETTER SO */ \ + OP(L'タ', RALT(Key_Q)) /* U+30bf, XKB_KEY_kana_TA, KATAKANA LETTER TA */ \ + OP(L'チ', RALT(Key_A)) /* U+30c1, XKB_KEY_kana_CHI, KATAKANA LETTER TI */ \ + OP(L'ツ', RALT(Key_Z)) /* U+30c4, XKB_KEY_kana_TSU, KATAKANA LETTER TU */ \ + OP(L'テ', RALT(Key_W)) /* U+30c6, XKB_KEY_kana_TE, KATAKANA LETTER TE */ \ + OP(L'ト', RALT(Key_S)) /* U+30c8, XKB_KEY_kana_TO, KATAKANA LETTER TO */ \ + OP(L'ナ', RALT(Key_U)) /* U+30ca, XKB_KEY_kana_NA, KATAKANA LETTER NA */ \ + OP(L'ニ', RALT(Key_I)) /* U+30cb, XKB_KEY_kana_NI, KATAKANA LETTER NI */ \ + OP(L'ヌ', RALT(Key_1)) /* U+30cc, XKB_KEY_kana_NU, KATAKANA LETTER NU */ \ + OP(L'ネ', RALT(Key_Comma)) /* U+30cd, XKB_KEY_kana_NE, KATAKANA LETTER NE */ \ + OP(L'ノ', RALT(Key_K)) /* U+30ce, XKB_KEY_kana_NO, KATAKANA LETTER NO */ \ + OP(L'ハ', RALT(Key_F)) /* U+30cf, XKB_KEY_kana_HA, KATAKANA LETTER HA */ \ + OP(L'ヒ', RALT(Key_V)) /* U+30d2, XKB_KEY_kana_HI, KATAKANA LETTER HI */ \ + OP(L'フ', RALT(Key_2)) /* U+30d5, XKB_KEY_kana_FU, KATAKANA LETTER HU */ \ + OP(L'ヘ', RALT(Key_Equals)) /* U+30d8, XKB_KEY_kana_HE, KATAKANA LETTER HE */ \ + OP(L'ホ', RALT(Key_Minus)) /* U+30db, XKB_KEY_kana_HO, KATAKANA LETTER HO */ \ + OP(L'マ', RALT(Key_J)) /* U+30de, XKB_KEY_kana_MA, KATAKANA LETTER MA */ \ + OP(L'ミ', RALT(Key_N)) /* U+30df, XKB_KEY_kana_MI, KATAKANA LETTER MI */ \ + OP(L'ム', RALT(Key_NonUsPound)) /* U+30e0, XKB_KEY_kana_MU, KATAKANA LETTER MU */ \ + OP(L'メ', RALT(Key_Slash)) /* U+30e1, XKB_KEY_kana_ME, KATAKANA LETTER ME */ \ + OP(L'モ', RALT(Key_M)) /* U+30e2, XKB_KEY_kana_MO, KATAKANA LETTER MO */ \ + OP(L'ヤ', RALT(Key_7)) /* U+30e4, XKB_KEY_kana_YA, KATAKANA LETTER YA */ \ + OP(L'ユ', RALT(Key_8)) /* U+30e6, XKB_KEY_kana_YU, KATAKANA LETTER YU */ \ + OP(L'ヨ', RALT(Key_9)) /* U+30e8, XKB_KEY_kana_YO, KATAKANA LETTER YO */ \ + OP(L'ラ', RALT(Key_O)) /* U+30e9, XKB_KEY_kana_RA, KATAKANA LETTER RA */ \ + OP(L'リ', RALT(Key_L)) /* U+30ea, XKB_KEY_kana_RI, KATAKANA LETTER RI */ \ + OP(L'ル', RALT(Key_Period)) /* U+30eb, XKB_KEY_kana_RU, KATAKANA LETTER RU */ \ + OP(L'レ', RALT(Key_Semicolon)) /* U+30ec, XKB_KEY_kana_RE, KATAKANA LETTER RE */ \ + OP(L'ワ', RALT(Key_0)) /* U+30ef, XKB_KEY_kana_WA, KATAKANA LETTER WA */ \ + OP(L'ン', RALT(Key_Y)) /* U+30f3, XKB_KEY_kana_N, KATAKANA LETTER N */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Clear, Key_Home) /* XKB_KEY_Clear */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, LSHIFT(Key_Home)) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, Key_Keypad0) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, Key_Keypad1) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, Key_Keypad2) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, Key_Keypad3) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, Key_Keypad4) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, Key_Keypad5) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, Key_Keypad6) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, Key_Keypad7) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, Key_Keypad8) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, Key_Keypad9) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Mode_switch, Key_RightAlt) /* XKB_KEY_Mode_switch, Character set switch */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_7)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, Key_Equals) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_at, Key_LeftBracket) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_bracketleft, Key_RightBracket) \ + OP(XKB_KEY_bracketright, Key_NonUsPound) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, Key_Quote) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kana_A, RALT(Key_3)) \ + OP(XKB_KEY_kana_CHI, RALT(Key_A)) /* XKB_KEY_kana_TI, deprecated */ \ + OP(XKB_KEY_kana_E, RALT(Key_5)) \ + OP(XKB_KEY_kana_FU, RALT(Key_2)) /* XKB_KEY_kana_HU, deprecated */ \ + OP(XKB_KEY_kana_HA, RALT(Key_F)) \ + OP(XKB_KEY_kana_HE, RALT(Key_Equals)) \ + OP(XKB_KEY_kana_HI, RALT(Key_V)) \ + OP(XKB_KEY_kana_HO, RALT(Key_Minus)) \ + OP(XKB_KEY_kana_I, RALT(Key_E)) \ + OP(XKB_KEY_kana_KA, RALT(Key_T)) \ + OP(XKB_KEY_kana_KE, RALT(Key_Quote)) \ + OP(XKB_KEY_kana_KI, RALT(Key_G)) \ + OP(XKB_KEY_kana_KO, RALT(Key_B)) \ + OP(XKB_KEY_kana_KU, RALT(Key_H)) \ + OP(XKB_KEY_kana_MA, RALT(Key_J)) \ + OP(XKB_KEY_kana_ME, RALT(Key_Slash)) \ + OP(XKB_KEY_kana_MI, RALT(Key_N)) \ + OP(XKB_KEY_kana_MO, RALT(Key_M)) \ + OP(XKB_KEY_kana_MU, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_kana_N, RALT(Key_Y)) \ + OP(XKB_KEY_kana_NA, RALT(Key_U)) \ + OP(XKB_KEY_kana_NE, RALT(Key_Comma)) \ + OP(XKB_KEY_kana_NI, RALT(Key_I)) \ + OP(XKB_KEY_kana_NO, RALT(Key_K)) \ + OP(XKB_KEY_kana_NU, RALT(Key_1)) \ + OP(XKB_KEY_kana_O, RALT(Key_6)) \ + OP(XKB_KEY_kana_RA, RALT(Key_O)) \ + OP(XKB_KEY_kana_RE, RALT(Key_Semicolon)) \ + OP(XKB_KEY_kana_RI, RALT(Key_L)) \ + OP(XKB_KEY_kana_RU, RALT(Key_Period)) \ + OP(XKB_KEY_kana_SA, RALT(Key_X)) \ + OP(XKB_KEY_kana_SE, RALT(Key_P)) \ + OP(XKB_KEY_kana_SHI, RALT(Key_D)) \ + OP(XKB_KEY_kana_SO, RALT(Key_C)) \ + OP(XKB_KEY_kana_SU, RALT(Key_R)) \ + OP(XKB_KEY_kana_TA, RALT(Key_Q)) \ + OP(XKB_KEY_kana_TE, RALT(Key_W)) \ + OP(XKB_KEY_kana_TO, RALT(Key_S)) \ + OP(XKB_KEY_kana_TSU, RALT(Key_Z)) /* XKB_KEY_kana_TU, deprecated */ \ + OP(XKB_KEY_kana_U, RALT(Key_4)) \ + OP(XKB_KEY_kana_WA, RALT(Key_0)) \ + OP(XKB_KEY_kana_YA, RALT(Key_7)) \ + OP(XKB_KEY_kana_YO, RALT(Key_9)) \ + OP(XKB_KEY_kana_YU, RALT(Key_8)) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_semivoicedsound, RALT(Key_RightBracket)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_voicedsound, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace nec_vndr_jp { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace nec_vndr_jp +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ng/hausa/keymap.h b/src/kaleidoscope/host_keymap/linux/ng/hausa/keymap.h new file mode 100644 index 0000000000..098d65907f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ng/hausa/keymap.h @@ -0,0 +1,476 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ng +// variant: hausa + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', RALT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', RALT(LSHIFT(Key_Semicolon))) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', RALT(LSHIFT(Key_Slash))) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', RALT(LSHIFT(Key_D))) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', RALT(LSHIFT(Key_M))) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', RALT(LSHIFT(Key_Z))) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', RALT(Key_D)) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', RALT(Key_M)) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', RALT(Key_Z)) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', RALT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', RALT(LSHIFT(Key_Semicolon))) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', RALT(LSHIFT(Key_Slash))) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', RALT(LSHIFT(Key_D))) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', RALT(LSHIFT(Key_M))) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', RALT(LSHIFT(Key_Z))) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', RALT(Key_D)) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', RALT(Key_M)) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', RALT(Key_Z)) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ç', LSHIFT(Key_Period)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ñ', LSHIFT(Key_M)) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ü', LSHIFT(Key_W)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'ç', Key_Period) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ñ', Key_M) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ü', Key_W) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'İ', LSHIFT(Key_Semicolon)) \ + OP(L'ı', Key_Semicolon) \ + OP(L'Ş', LSHIFT(Key_Slash)) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', Key_Slash) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ɗ', LSHIFT(Key_D)) \ + OP(L'Ǝ', LSHIFT(Key_Quote)) \ + OP(L'Ɲ', LSHIFT(Key_Z)) \ + OP(L'Ƴ', LSHIFT(Key_LeftBracket)) \ + OP(L'ƴ', Key_LeftBracket) \ + OP(L'ǝ', Key_Quote) \ + OP(L'Ǧ', LSHIFT(Key_RightBracket)) /* U+01e6, XKB_KEY_Gcaron, LATIN CAPITAL LETTER G WITH CARON */ \ + OP(L'ǧ', Key_RightBracket) /* U+01e7, XKB_KEY_gcaron, LATIN SMALL LETTER G WITH CARON */ \ + OP(L'ɗ', Key_D) \ + OP(L'ɲ', Key_Z) \ + OP(L'₦', LSHIFT(Key_4)) /* U+20a6, XKB_KEY_NairaSign, NAIRA SIGN */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gcaron, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_NairaSign, LSHIFT(Key_4)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, LSHIFT(Key_M)) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_W)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_braceright, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_Period) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, RALT(Key_D)) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gcaron, Key_RightBracket) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, RALT(Key_M)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_ntilde, Key_M) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_quotedbl, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, Key_Slash) \ + OP(XKB_KEY_semicolon, RALT(Key_Semicolon)) \ + OP(XKB_KEY_slash, RALT(Key_Slash)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_W) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, RALT(Key_W)) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ng { +namespace hausa { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace hausa +} // namespace ng +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ng/igbo/keymap.h b/src/kaleidoscope/host_keymap/linux/ng/igbo/keymap.h new file mode 100644 index 0000000000..761c52aeb5 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ng/igbo/keymap.h @@ -0,0 +1,458 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ng +// variant: igbo + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', RALT(LSHIFT(Key_Semicolon))) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', RALT(LSHIFT(Key_Semicolon))) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ṅ', LSHIFT(Key_X)) \ + OP(L'ṅ', Key_X) \ + OP(L'Ị', LSHIFT(Key_Q)) /* U+1eca, XKB_KEY_Ibelowdot, LATIN CAPITAL LETTER I WITH DOT BELOW */ \ + OP(L'ị', Key_Q) /* U+1ecb, XKB_KEY_ibelowdot, LATIN SMALL LETTER I WITH DOT BELOW */ \ + OP(L'Ọ', LSHIFT(Key_LeftBracket)) /* U+1ecc, XKB_KEY_Obelowdot, LATIN CAPITAL LETTER O WITH DOT BELOW */ \ + OP(L'ọ', Key_LeftBracket) /* U+1ecd, XKB_KEY_obelowdot, LATIN SMALL LETTER O WITH DOT BELOW */ \ + OP(L'Ụ', LSHIFT(Key_Semicolon)) /* U+1ee4, XKB_KEY_Ubelowdot, LATIN CAPITAL LETTER U WITH DOT BELOW */ \ + OP(L'ụ', Key_Semicolon) /* U+1ee5, XKB_KEY_ubelowdot, LATIN SMALL LETTER U WITH DOT BELOW */ \ + OP(L'₦', LSHIFT(Key_4)) /* U+20a6, XKB_KEY_NairaSign, NAIRA SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Ibelowdot, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_NairaSign, LSHIFT(Key_4)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Obelowdot, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ubelowdot, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_ibelowdot, Key_Q) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_obelowdot, Key_LeftBracket) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, RALT(Key_Semicolon)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ubelowdot, Key_Semicolon) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, RALT(Key_X)) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ng { +namespace igbo { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace igbo +} // namespace ng +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ng/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/ng/standard/keymap.h new file mode 100644 index 0000000000..a45063ab3b --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ng/standard/keymap.h @@ -0,0 +1,444 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ng +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'₦', LSHIFT(Key_4)) /* U+20a6, XKB_KEY_NairaSign, NAIRA SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_NairaSign, LSHIFT(Key_4)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ng { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace ng +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ng/yoruba/keymap.h b/src/kaleidoscope/host_keymap/linux/ng/yoruba/keymap.h new file mode 100644 index 0000000000..4d5373e177 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ng/yoruba/keymap.h @@ -0,0 +1,454 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ng +// variant: yoruba + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', RALT(LSHIFT(Key_V))) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', RALT(Key_V)) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', RALT(LSHIFT(Key_V))) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', RALT(Key_V)) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(LSHIFT(Key_4))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ṣ', LSHIFT(Key_V)) \ + OP(L'ṣ', Key_V) \ + OP(L'Ẹ', LSHIFT(Key_Q)) /* U+1eb8, XKB_KEY_Ebelowdot, LATIN CAPITAL LETTER E WITH DOT BELOW */ \ + OP(L'ẹ', Key_Q) /* U+1eb9, XKB_KEY_ebelowdot, LATIN SMALL LETTER E WITH DOT BELOW */ \ + OP(L'Ọ', LSHIFT(Key_X)) /* U+1ecc, XKB_KEY_Obelowdot, LATIN CAPITAL LETTER O WITH DOT BELOW */ \ + OP(L'ọ', Key_X) /* U+1ecd, XKB_KEY_obelowdot, LATIN SMALL LETTER O WITH DOT BELOW */ \ + OP(L'₦', LSHIFT(Key_4)) /* U+20a6, XKB_KEY_NairaSign, NAIRA SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Ebelowdot, LSHIFT(Key_Q)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_NairaSign, LSHIFT(Key_4)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Obelowdot, LSHIFT(Key_X)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_ebelowdot, Key_Q) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_obelowdot, Key_X) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, RALT(Key_V)) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, RALT(Key_X)) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ng { +namespace yoruba { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace yoruba +} // namespace ng +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/nl/mac/keymap.h b/src/kaleidoscope/host_keymap/linux/nl/mac/keymap.h new file mode 100644 index 0000000000..5048da4071 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/nl/mac/keymap.h @@ -0,0 +1,578 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: nl +// variant: mac + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace nl { +namespace mac { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mac +} // namespace nl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/nl/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/nl/standard/keymap.h new file mode 100644 index 0000000000..c472b6e3c9 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/nl/standard/keymap.h @@ -0,0 +1,573 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: nl +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_0)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_RightBracket) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_Semicolon) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Minus) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsPound) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_Slash)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsPound)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_Backtick) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_NonUsBackslashAndPipe) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_LeftBracket))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_7)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(LSHIFT(Key_Quote))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_8)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_RightBracket)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_9)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_LeftBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_0)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_RightBracket) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_Semicolon) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Minus) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsPound) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_Slash)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsPound)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_Backtick) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_NonUsBackslashAndPipe) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_LeftBracket))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_7)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(LSHIFT(Key_Quote))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_8)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_RightBracket)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_9)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_LeftBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_7)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_F)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'­', RALT(Key_Slash)) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', Key_Equals) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', LSHIFT(Key_Semicolon)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¸', RALT(Key_Comma)) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_A))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ï', RALT(LSHIFT(Key_I))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ò', RALT(LSHIFT(Key_O))) /* U+00d2, XKB_KEY_Ograve, LATIN CAPITAL LETTER O WITH GRAVE */ \ + OP(L'Ü', RALT(LSHIFT(Key_U))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', RALT(Key_A)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ï', RALT(Key_I)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ò', RALT(Key_O)) /* U+00f2, XKB_KEY_ograve, LATIN SMALL LETTER O WITH GRAVE */ \ + OP(L'ü', RALT(Key_U)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ÿ', RALT(Key_Y)) /* U+00ff, XKB_KEY_ydiaeresis, LATIN SMALL LETTER Y WITH DIAERESIS */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'μ', RALT(Key_M)) /* U+03bc, XKB_KEY_Greek_mu, GREEK SMALL LETTER MU */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_0))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Greek_mu, RALT(Key_M)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Ograve, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_0)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_asciitilde, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_asterisk, Key_RightBracket) \ + OP(XKB_KEY_at, Key_Backtick) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_braceleft, RALT(Key_8)) \ + OP(XKB_KEY_braceright, RALT(Key_9)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bracketright, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cedilla, RALT(Key_Comma)) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_LeftBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Quote)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, LSHIFT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, Key_Equals) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_hyphen, RALT(Key_Slash)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idiaeresis, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsPound) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ograve, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(Key_F)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_Semicolon) \ + OP(XKB_KEY_plusminus, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_Minus) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_7)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_7)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_ydiaeresis, RALT(Key_Y)) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace nl { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace nl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/nl/std/keymap.h b/src/kaleidoscope/host_keymap/linux/nl/std/keymap.h new file mode 100644 index 0000000000..82f2eb0949 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/nl/std/keymap.h @@ -0,0 +1,475 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: nl +// variant: std + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_0)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_RightBracket) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_Semicolon) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Minus) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsPound) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_Slash)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsPound)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_Backtick) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_NonUsBackslashAndPipe) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_7)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_8)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_RightBracket)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_9)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_0)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_RightBracket) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_Semicolon) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Minus) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsPound) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_Slash)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsPound)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_Backtick) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_NonUsBackslashAndPipe) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_7)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_8)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_RightBracket)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_9)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_7)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'°', Key_Equals) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', LSHIFT(Key_Semicolon)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_0)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, Key_RightBracket) \ + OP(XKB_KEY_at, Key_Backtick) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_braceleft, RALT(Key_8)) \ + OP(XKB_KEY_braceright, RALT(Key_9)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bracketright, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_LeftBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Quote)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, LSHIFT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, Key_Equals) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsPound) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_Semicolon) \ + OP(XKB_KEY_plusminus, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, Key_Minus) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_7)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_7)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace nl { +namespace std { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace std +} // namespace nl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/nl/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/nl/sun_type6/keymap.h new file mode 100644 index 0000000000..f9f7500308 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/nl/sun_type6/keymap.h @@ -0,0 +1,480 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: nl +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_0)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_RightBracket) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_Semicolon) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Minus) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsPound) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_Slash)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsPound)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_Backtick) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_NonUsBackslashAndPipe) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_NonUsPound)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_7)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_0)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_8)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_RightBracket)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_9)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_0)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_RightBracket) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_Semicolon) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Minus) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsPound) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_Slash)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsPound)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_Backtick) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_NonUsBackslashAndPipe) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_NonUsPound)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_7)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_0)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_8)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_RightBracket)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_9)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_7)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'°', Key_Equals) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', LSHIFT(Key_Semicolon)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_0)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, Key_RightBracket) \ + OP(XKB_KEY_at, Key_Backtick) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_braceleft, RALT(Key_8)) \ + OP(XKB_KEY_braceright, RALT(Key_9)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bracketright, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_brokenbar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_LeftBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Quote)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, LSHIFT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, Key_Equals) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_0)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsPound) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Semicolon) \ + OP(XKB_KEY_plusminus, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, Key_Minus) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_7)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_7)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace nl { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace nl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/nl/sundeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/nl/sundeadkeys/keymap.h new file mode 100644 index 0000000000..fe47bab718 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/nl/sundeadkeys/keymap.h @@ -0,0 +1,573 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: nl +// variant: sundeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_0)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_RightBracket) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_Semicolon) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Minus) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsPound) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_Slash)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsPound)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_Backtick) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_NonUsBackslashAndPipe) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_LeftBracket))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_7)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(LSHIFT(Key_Quote))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_8)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_RightBracket)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_9)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_LeftBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_0)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_RightBracket) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_Semicolon) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Minus) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsPound) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_Slash)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsPound)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_Backtick) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_NonUsBackslashAndPipe) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_LeftBracket))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_7)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(LSHIFT(Key_Quote))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_8)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_RightBracket)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_9)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_LeftBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_7)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_F)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'­', RALT(Key_Slash)) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', Key_Equals) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', LSHIFT(Key_Semicolon)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¸', RALT(Key_Comma)) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_A))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ï', RALT(LSHIFT(Key_I))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ò', RALT(LSHIFT(Key_O))) /* U+00d2, XKB_KEY_Ograve, LATIN CAPITAL LETTER O WITH GRAVE */ \ + OP(L'Ü', RALT(LSHIFT(Key_U))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', RALT(Key_A)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ï', RALT(Key_I)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ò', RALT(Key_O)) /* U+00f2, XKB_KEY_ograve, LATIN SMALL LETTER O WITH GRAVE */ \ + OP(L'ü', RALT(Key_U)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ÿ', RALT(Key_Y)) /* U+00ff, XKB_KEY_ydiaeresis, LATIN SMALL LETTER Y WITH DIAERESIS */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'μ', RALT(Key_M)) /* U+03bc, XKB_KEY_Greek_mu, GREEK SMALL LETTER MU */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_0))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Greek_mu, RALT(Key_M)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Ograve, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_0)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_asciitilde, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_asterisk, Key_RightBracket) \ + OP(XKB_KEY_at, Key_Backtick) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_braceleft, RALT(Key_8)) \ + OP(XKB_KEY_braceright, RALT(Key_9)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bracketright, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cedilla, RALT(Key_Comma)) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_LeftBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Quote)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, LSHIFT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, Key_Equals) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_hyphen, RALT(Key_Slash)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idiaeresis, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsPound) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ograve, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(Key_F)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_Semicolon) \ + OP(XKB_KEY_plusminus, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_Minus) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_7)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_7)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_ydiaeresis, RALT(Key_Y)) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace nl { +namespace sundeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sundeadkeys +} // namespace nl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/no/colemak/keymap.h b/src/kaleidoscope/host_keymap/linux/no/colemak/keymap.h new file mode 100644 index 0000000000..7c8fbc8dcf --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/no/colemak/keymap.h @@ -0,0 +1,582 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: no +// variant: colemak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_G)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_E)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_T)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_L)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_Y)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_Semicolon)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_S)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_D)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_O)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Equals) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_G) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_E) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_T) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_L) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_Y) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_Semicolon) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_S) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_D) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_O) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_G)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_E)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_T)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_L)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_Y)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_Semicolon)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_S)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_D)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_O)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Equals) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_G) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_E) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_T) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_L) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_Y) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_Semicolon) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_S) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_D) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_O) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_K))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_6)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(Key_Backtick)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_A)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_Equals))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_S)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_Minus)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_Backtick))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_Period))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_A))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', LSHIFT(Key_Quote)) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_G))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(Key_KeypadMultiply)) \ + OP(L'Ø', LSHIFT(Key_P)) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_F))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_D)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', Key_Quote) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_G)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(Key_KeypadDivide)) \ + OP(L'ø', Key_P) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_F)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_E)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_L))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_N)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_T))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_T)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_Semicolon))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_Semicolon)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Π', RALT(LSHIFT(Key_R))) /* U+03a0, XKB_KEY_Greek_PI, GREEK CAPITAL LETTER PI */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'π', RALT(Key_R)) /* U+03c0, XKB_KEY_Greek_pi, GREEK SMALL LETTER PI */ \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'…', RALT(Key_Period)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'€', RALT(Key_K)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_S))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_I))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_L)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_I)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'−', RALT(Key_KeypadSubtract)) \ + OP(L'∕', LSHIFT(Key_KeypadDivide)) \ + OP(L'⋅', LSHIFT(Key_KeypadMultiply)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_G)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_K)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_G))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_K)) \ + OP(XKB_KEY_F, LSHIFT(Key_E)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_T)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Greek_PI, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Greek_pi, RALT(Key_R)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_L)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_Y)) \ + OP(XKB_KEY_K, LSHIFT(Key_N)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_U)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_J)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Oslash, LSHIFT(Key_P)) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_S)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_D)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_F)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_F))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_I)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_O)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_Equals) \ + OP(XKB_KEY_bar, Key_Backtick) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(Key_Backtick)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_G) \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Equals)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Comma)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_NonUsPound)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Comma))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_I)) \ + OP(XKB_KEY_dstroke, RALT(Key_E)) \ + OP(XKB_KEY_e, Key_K) \ + OP(XKB_KEY_ellipsis, RALT(Key_Period)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, RALT(Key_T)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_G)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_E) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_T) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_L) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_j, Key_Y) \ + OP(XKB_KEY_k, Key_N) \ + OP(XKB_KEY_kra, RALT(Key_N)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_U) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_n, Key_J) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_Semicolon) \ + OP(XKB_KEY_oe, RALT(Key_Semicolon)) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_A)) \ + OP(XKB_KEY_oslash, Key_P) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(Key_Minus)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_S) \ + OP(XKB_KEY_registered, RALT(Key_S)) \ + OP(XKB_KEY_rightarrow, RALT(Key_L)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_D) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_D)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_F) \ + OP(XKB_KEY_thorn, RALT(Key_F)) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_I) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_O) \ + OP(XKB_KEY_yen, RALT(Key_6)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace no { +namespace colemak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace colemak +} // namespace no +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/no/dvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/no/dvorak/keymap.h new file mode 100644 index 0000000000..53bcbc31e3 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/no/dvorak/keymap.h @@ -0,0 +1,529 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: no +// variant: dvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_LeftBracket) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_E)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_W)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsPound) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsPound)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Equals) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_LeftBracket) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_E)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_W)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsPound) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsPound)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Equals) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_D))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_T)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(Key_Backtick)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_Quote))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_I))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_Y)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_NonUsPound)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'­', RALT(Key_Quote)) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'®', RALT(Key_O)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'±', RALT(Key_Minus)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(LSHIFT(Key_LeftBracket))) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_Backtick))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_E)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¸', RALT(LSHIFT(Key_W))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(LSHIFT(Key_NonUsPound))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Å', LSHIFT(Key_Q)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', LSHIFT(Key_Z)) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_H))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(Key_B)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_R))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Semicolon)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'å', Key_Q) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', Key_Z) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_I)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_H)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_7))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', Key_NonUsBackslashAndPipe) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_R)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'İ', RALT(LSHIFT(Key_G))) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'ı', RALT(Key_G)) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'€', RALT(Key_D)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_Q)) \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_H))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_D)) \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_Oslash, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_R))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_ae, Key_Z) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_LeftBracket) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_Q) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_Equals) \ + OP(XKB_KEY_bar, Key_Backtick) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(Key_Backtick)) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_ccedilla, RALT(Key_I)) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_colon, LSHIFT(Key_E)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dead_acute, RALT(Key_Equals)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_W)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_LeftBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_H)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_hyphen, RALT(Key_Quote)) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_idotless, RALT(Key_G)) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_less, Key_NonUsPound) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(Key_B)) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_Y)) \ + OP(XKB_KEY_oslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(Key_E)) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(Key_Minus)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_registered, RALT(Key_O)) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_W)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Semicolon)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_thorn, RALT(Key_R)) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_yen, RALT(Key_T)) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace no { +namespace dvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak +} // namespace no +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/no/mac/keymap.h b/src/kaleidoscope/host_keymap/linux/no/mac/keymap.h new file mode 100644 index 0000000000..ea09adc0dc --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/no/mac/keymap.h @@ -0,0 +1,432 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: no +// variant: mac + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_NonUsPound) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_NonUsPound) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', Key_RightBracket) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', LSHIFT(Key_Quote)) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ø', LSHIFT(Key_Semicolon)) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', Key_Quote) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ø', Key_Semicolon) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, Key_NonUsPound) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_bar, Key_Backtick) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, LSHIFT(Key_Equals)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_grave, Key_Equals) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_diaeresis, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oslash, Key_Semicolon) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace no { +namespace mac { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mac +} // namespace no +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/no/mac_nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/no/mac_nodeadkeys/keymap.h new file mode 100644 index 0000000000..bcf14e2f58 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/no/mac_nodeadkeys/keymap.h @@ -0,0 +1,435 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: no +// variant: mac_nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_NonUsPound) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Equals) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_NonUsPound) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Equals) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', Key_RightBracket) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'´', LSHIFT(Key_Equals)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', LSHIFT(Key_Quote)) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ø', LSHIFT(Key_Semicolon)) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', Key_Quote) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ø', Key_Semicolon) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_ae, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, Key_NonUsPound) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_bar, Key_Backtick) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_diaeresis, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Equals) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oslash, Key_Semicolon) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace no { +namespace mac_nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mac_nodeadkeys +} // namespace no +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/no/nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/no/nodeadkeys/keymap.h new file mode 100644 index 0000000000..340d089aaa --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/no/nodeadkeys/keymap.h @@ -0,0 +1,596 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: no +// variant: nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Equals) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Equals) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_E))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_6)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(Key_Backtick)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', Key_RightBracket) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_A)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_RightBracket))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_Minus)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Equals)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_Backtick))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¸', RALT(Key_Comma)) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_A))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', LSHIFT(Key_Quote)) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(Key_KeypadMultiply)) \ + OP(L'Ø', LSHIFT(Key_Semicolon)) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', Key_Quote) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(Key_KeypadDivide)) \ + OP(L'ø', Key_Semicolon) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'ˇ', RALT(LSHIFT(Key_Quote))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˙', RALT(LSHIFT(Key_Period))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_Equals))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_Semicolon))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Π', RALT(LSHIFT(Key_P))) /* U+03a0, XKB_KEY_Greek_PI, GREEK CAPITAL LETTER PI */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'π', RALT(Key_P)) /* U+03c0, XKB_KEY_Greek_pi, GREEK SMALL LETTER PI */ \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_R))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'−', RALT(Key_KeypadSubtract)) \ + OP(L'∕', LSHIFT(Key_KeypadDivide)) \ + OP(L'⋅', LSHIFT(Key_KeypadMultiply)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Greek_PI, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Greek_pi, RALT(Key_P)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Oslash, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_acute, RALT(Key_Equals)) \ + OP(XKB_KEY_ae, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_Equals) \ + OP(XKB_KEY_bar, Key_Backtick) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(Key_Backtick)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_cedilla, RALT(Key_Comma)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_NonUsPound)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_diaeresis, Key_RightBracket) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_A)) \ + OP(XKB_KEY_oslash, Key_Semicolon) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(Key_Minus)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_6)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace no { +namespace nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace nodeadkeys +} // namespace no +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/no/smi/keymap.h b/src/kaleidoscope/host_keymap/linux/no/smi/keymap.h new file mode 100644 index 0000000000..495477cfc5 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/no/smi/keymap.h @@ -0,0 +1,606 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: no +// variant: smi + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(LSHIFT(Key_3))) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(LSHIFT(Key_4))) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Equals) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_RightBracket))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Equals))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(LSHIFT(Key_3))) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(LSHIFT(Key_4))) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Equals) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_RightBracket))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Equals))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(Key_Backtick)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_6)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_1)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_F)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(LSHIFT(Key_V))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_J)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'­', RALT(LSHIFT(Key_L))) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_L)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'´', RALT(Key_Equals)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¶', RALT(LSHIFT(Key_6))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_Period))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'»', RALT(LSHIFT(Key_B))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', RALT(LSHIFT(Key_A))) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Á', LSHIFT(Key_Q)) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Â', RALT(LSHIFT(Key_LeftBracket))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ä', RALT(LSHIFT(Key_Quote))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', LSHIFT(Key_Quote)) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'É', RALT(LSHIFT(Key_E))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ï', RALT(LSHIFT(Key_I))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', RALT(LSHIFT(Key_Semicolon))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_J))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', LSHIFT(Key_Semicolon)) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ü', RALT(LSHIFT(Key_U))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Ý', RALT(LSHIFT(Key_Y))) /* U+00dd, XKB_KEY_Yacute, LATIN CAPITAL LETTER Y WITH ACUTE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', RALT(Key_A)) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'á', Key_Q) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'â', RALT(Key_LeftBracket)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ä', RALT(Key_Quote)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', Key_Quote) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', RALT(Key_E)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ï', RALT(Key_I)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', RALT(Key_Semicolon)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_Minus)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', Key_Semicolon) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', RALT(Key_U)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'ý', RALT(Key_Y)) /* U+00fd, XKB_KEY_yacute, LATIN SMALL LETTER Y WITH ACUTE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Č', LSHIFT(Key_X)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_X) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_NonUsPound)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_NonUsPound) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ŋ', LSHIFT(Key_RightBracket)) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', Key_RightBracket) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Š', LSHIFT(Key_W)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_W) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ž', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_NonUsBackslashAndPipe) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'Ʒ', RALT(LSHIFT(Key_Z))) /* U+01b7, XKB_KEY_EZH, LATIN CAPITAL LETTER EZH */ \ + OP(L'Ǥ', RALT(LSHIFT(Key_H))) \ + OP(L'ǥ', RALT(Key_H)) \ + OP(L'Ǧ', RALT(LSHIFT(Key_G))) /* U+01e6, XKB_KEY_Gcaron, LATIN CAPITAL LETTER G WITH CARON */ \ + OP(L'ǧ', RALT(Key_G)) /* U+01e7, XKB_KEY_gcaron, LATIN SMALL LETTER G WITH CARON */ \ + OP(L'Ǩ', RALT(LSHIFT(Key_K))) \ + OP(L'ǩ', RALT(Key_K)) \ + OP(L'Ǯ', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(L'ǯ', RALT(Key_NonUsBackslashAndPipe)) \ + OP(L'ʒ', RALT(Key_Z)) /* U+0292, XKB_KEY_ezh, LATIN SMALL LETTER EZH */ \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_N)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_M)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(Key_Comma)) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_N))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_M))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_Comma))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'•', RALT(Key_5)) \ + OP(L'…', RALT(Key_Period)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'™', RALT(LSHIFT(Key_R))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'≠', RALT(LSHIFT(Key_0))) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'≤', RALT(Key_V)) /* U+2264, XKB_KEY_lessthanequal, LESS-THAN OR EQUAL TO */ \ + OP(L'≥', RALT(Key_B)) /* U+2265, XKB_KEY_greaterthanequal, GREATER-THAN OR EQUAL TO */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Aacute, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Agrave, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_X)) \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_EZH, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gcaron, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Oslash, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_W)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_X, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Yacute, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_Q) \ + OP(XKB_KEY_acircumflex, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_acute, RALT(Key_Equals)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_Quote)) \ + OP(XKB_KEY_ae, Key_Quote) \ + OP(XKB_KEY_agrave, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, RALT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_asterisk, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_Equals) \ + OP(XKB_KEY_bar, Key_Backtick) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(Key_Backtick)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, Key_X) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_1)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_degree, RALT(Key_L)) \ + OP(XKB_KEY_division, RALT(Key_Minus)) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_dstroke, Key_NonUsPound) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, RALT(Key_E)) \ + OP(XKB_KEY_ellipsis, RALT(Key_Period)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, Key_RightBracket) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ezh, RALT(Key_Z)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gcaron, RALT(Key_G)) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_greaterthanequal, RALT(Key_B)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hyphen, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idiaeresis, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_N)) \ + OP(XKB_KEY_less, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_lessthanequal, RALT(Key_V)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notequal, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_notsign, RALT(Key_J)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, RALT(Key_Semicolon)) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_ordfeminine, RALT(Key_F)) \ + OP(XKB_KEY_oslash, Key_Semicolon) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_M)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_W) \ + OP(XKB_KEY_section, RALT(Key_6)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_singlelowquotemark, RALT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, RALT(Key_W)) \ + OP(XKB_KEY_x, RALT(Key_X)) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yacute, RALT(Key_Y)) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, Key_NonUsBackslashAndPipe) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace no { +namespace smi { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace smi +} // namespace no +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/no/smi_nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/no/smi_nodeadkeys/keymap.h new file mode 100644 index 0000000000..d647a57f1a --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/no/smi_nodeadkeys/keymap.h @@ -0,0 +1,605 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: no +// variant: smi_nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(LSHIFT(Key_3))) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(LSHIFT(Key_4))) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Equals) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_RightBracket))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(LSHIFT(Key_3))) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(LSHIFT(Key_4))) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Equals) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_RightBracket))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(Key_Backtick)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_6)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_1)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_F)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(LSHIFT(Key_V))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_J)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'­', RALT(LSHIFT(Key_L))) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_L)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'´', RALT(Key_Equals)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¶', RALT(LSHIFT(Key_6))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_Period))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'»', RALT(LSHIFT(Key_B))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', RALT(LSHIFT(Key_A))) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Á', LSHIFT(Key_Q)) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Â', RALT(LSHIFT(Key_LeftBracket))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ä', RALT(LSHIFT(Key_Quote))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', LSHIFT(Key_Quote)) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'É', RALT(LSHIFT(Key_E))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ï', RALT(LSHIFT(Key_I))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', RALT(LSHIFT(Key_Semicolon))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_J))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', LSHIFT(Key_Semicolon)) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ü', RALT(LSHIFT(Key_U))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Ý', RALT(LSHIFT(Key_Y))) /* U+00dd, XKB_KEY_Yacute, LATIN CAPITAL LETTER Y WITH ACUTE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', RALT(Key_A)) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'á', Key_Q) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'â', RALT(Key_LeftBracket)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ä', RALT(Key_Quote)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', Key_Quote) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', RALT(Key_E)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ï', RALT(Key_I)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', RALT(Key_Semicolon)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_Minus)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', Key_Semicolon) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', RALT(Key_U)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'ý', RALT(Key_Y)) /* U+00fd, XKB_KEY_yacute, LATIN SMALL LETTER Y WITH ACUTE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Č', LSHIFT(Key_X)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_X) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_NonUsPound)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_NonUsPound) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ŋ', LSHIFT(Key_RightBracket)) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', Key_RightBracket) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Š', LSHIFT(Key_W)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_W) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ž', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_NonUsBackslashAndPipe) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'Ʒ', RALT(LSHIFT(Key_Z))) /* U+01b7, XKB_KEY_EZH, LATIN CAPITAL LETTER EZH */ \ + OP(L'Ǥ', RALT(LSHIFT(Key_H))) \ + OP(L'ǥ', RALT(Key_H)) \ + OP(L'Ǧ', RALT(LSHIFT(Key_G))) /* U+01e6, XKB_KEY_Gcaron, LATIN CAPITAL LETTER G WITH CARON */ \ + OP(L'ǧ', RALT(Key_G)) /* U+01e7, XKB_KEY_gcaron, LATIN SMALL LETTER G WITH CARON */ \ + OP(L'Ǩ', RALT(LSHIFT(Key_K))) \ + OP(L'ǩ', RALT(Key_K)) \ + OP(L'Ǯ', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(L'ǯ', RALT(Key_NonUsBackslashAndPipe)) \ + OP(L'ʒ', RALT(Key_Z)) /* U+0292, XKB_KEY_ezh, LATIN SMALL LETTER EZH */ \ + OP(L'˛', RALT(LSHIFT(Key_Equals))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_N)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_M)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(Key_Comma)) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_N))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_M))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_Comma))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'•', RALT(Key_5)) \ + OP(L'…', RALT(Key_Period)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'™', RALT(LSHIFT(Key_R))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'≠', RALT(LSHIFT(Key_0))) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'≤', RALT(Key_V)) /* U+2264, XKB_KEY_lessthanequal, LESS-THAN OR EQUAL TO */ \ + OP(L'≥', RALT(Key_B)) /* U+2265, XKB_KEY_greaterthanequal, GREATER-THAN OR EQUAL TO */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Aacute, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Agrave, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_X)) \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_EZH, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gcaron, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Oslash, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_W)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_X, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Yacute, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_Q) \ + OP(XKB_KEY_acircumflex, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_acute, RALT(Key_Equals)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_Quote)) \ + OP(XKB_KEY_ae, Key_Quote) \ + OP(XKB_KEY_agrave, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, RALT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_asterisk, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_Equals) \ + OP(XKB_KEY_bar, Key_Backtick) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(Key_Backtick)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, Key_X) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_1)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_degree, RALT(Key_L)) \ + OP(XKB_KEY_division, RALT(Key_Minus)) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_dstroke, Key_NonUsPound) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, RALT(Key_E)) \ + OP(XKB_KEY_ellipsis, RALT(Key_Period)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, Key_RightBracket) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ezh, RALT(Key_Z)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gcaron, RALT(Key_G)) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_greaterthanequal, RALT(Key_B)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hyphen, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idiaeresis, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_N)) \ + OP(XKB_KEY_less, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_lessthanequal, RALT(Key_V)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notequal, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_notsign, RALT(Key_J)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, RALT(Key_Semicolon)) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_F)) \ + OP(XKB_KEY_oslash, Key_Semicolon) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_M)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_W) \ + OP(XKB_KEY_section, RALT(Key_6)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_singlelowquotemark, RALT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, RALT(Key_W)) \ + OP(XKB_KEY_x, RALT(Key_X)) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yacute, RALT(Key_Y)) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, Key_NonUsBackslashAndPipe) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace no { +namespace smi_nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace smi_nodeadkeys +} // namespace no +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/no/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/no/standard/keymap.h new file mode 100644 index 0000000000..d6f171dc43 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/no/standard/keymap.h @@ -0,0 +1,582 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: no +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Equals) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Equals) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_E))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_6)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(Key_Backtick)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_A)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_Equals))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_Minus)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_Backtick))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_Period))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_A))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', LSHIFT(Key_Quote)) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(Key_KeypadMultiply)) \ + OP(L'Ø', LSHIFT(Key_Semicolon)) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', Key_Quote) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(Key_KeypadDivide)) \ + OP(L'ø', Key_Semicolon) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Π', RALT(LSHIFT(Key_P))) /* U+03a0, XKB_KEY_Greek_PI, GREEK CAPITAL LETTER PI */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'π', RALT(Key_P)) /* U+03c0, XKB_KEY_Greek_pi, GREEK SMALL LETTER PI */ \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'…', RALT(Key_Period)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_R))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'−', RALT(Key_KeypadSubtract)) \ + OP(L'∕', LSHIFT(Key_KeypadDivide)) \ + OP(L'⋅', LSHIFT(Key_KeypadMultiply)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Greek_PI, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Greek_pi, RALT(Key_P)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Oslash, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_Equals) \ + OP(XKB_KEY_bar, Key_Backtick) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(Key_Backtick)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Equals)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Comma)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_NonUsPound)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Comma))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_ellipsis, RALT(Key_Period)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_A)) \ + OP(XKB_KEY_oslash, Key_Semicolon) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(Key_Minus)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_6)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace no { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace no +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/no/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/no/sun_type6/keymap.h new file mode 100644 index 0000000000..cf646d0bc4 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/no/sun_type6/keymap.h @@ -0,0 +1,465 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: no +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Equals) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_5)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Equals) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_5)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', LSHIFT(Key_Quote)) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ø', LSHIFT(Key_Semicolon)) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', Key_Quote) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ø', Key_Semicolon) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(Key_5)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_Equals) \ + OP(XKB_KEY_bar, Key_Backtick) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, RALT(Key_Equals)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_NonUsPound)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oslash, Key_Semicolon) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace no { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace no +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/no/winkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/no/winkeys/keymap.h new file mode 100644 index 0000000000..b4b3ec82c5 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/no/winkeys/keymap.h @@ -0,0 +1,582 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: no +// variant: winkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Equals) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Equals) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_E))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_6)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(Key_Backtick)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Backtick)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_A)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_Equals))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_Minus)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_Backtick))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_Period))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_A))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_NonUsBackslashAndPipe)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', LSHIFT(Key_Quote)) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(Key_KeypadMultiply)) \ + OP(L'Ø', LSHIFT(Key_Semicolon)) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', Key_Quote) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(Key_KeypadDivide)) \ + OP(L'ø', Key_Semicolon) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Π', RALT(LSHIFT(Key_P))) /* U+03a0, XKB_KEY_Greek_PI, GREEK CAPITAL LETTER PI */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'π', RALT(Key_P)) /* U+03c0, XKB_KEY_Greek_pi, GREEK SMALL LETTER PI */ \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'…', RALT(Key_Period)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_R))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'−', RALT(Key_KeypadSubtract)) \ + OP(L'∕', LSHIFT(Key_KeypadDivide)) \ + OP(L'⋅', LSHIFT(Key_KeypadMultiply)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Greek_PI, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Greek_pi, RALT(Key_P)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Oslash, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_Equals) \ + OP(XKB_KEY_bar, Key_Backtick) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(Key_Backtick)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Equals)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Comma)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_NonUsPound)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Comma))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_ellipsis, RALT(Key_Period)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_onehalf, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_A)) \ + OP(XKB_KEY_oslash, Key_Semicolon) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(Key_Minus)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_6)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace no { +namespace winkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace winkeys +} // namespace no +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/np/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/np/standard/keymap.h new file mode 100644 index 0000000000..a63a420b73 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/np/standard/keymap.h @@ -0,0 +1,292 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: np +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'ँ', LSHIFT(Key_V)) \ + OP(L'ं', LSHIFT(Key_M)) \ + OP(L'ः', LSHIFT(Key_NonUsPound)) \ + OP(L'अ', LSHIFT(Key_H)) \ + OP(L'आ', LSHIFT(Key_A)) \ + OP(L'इ', Key_LeftBracket) \ + OP(L'ई', LSHIFT(Key_LeftBracket)) \ + OP(L'उ', Key_F) \ + OP(L'ऊ', LSHIFT(Key_F)) \ + OP(L'ऋ', LSHIFT(Key_Z)) \ + OP(L'ए', Key_RightBracket) \ + OP(L'ऐ', LSHIFT(Key_RightBracket)) \ + OP(L'ओ', LSHIFT(Key_O)) \ + OP(L'औ', LSHIFT(Key_W)) \ + OP(L'क', Key_K) \ + OP(L'ख', LSHIFT(Key_K)) \ + OP(L'ग', Key_G) \ + OP(L'घ', LSHIFT(Key_G)) \ + OP(L'ङ', LSHIFT(Key_Comma)) \ + OP(L'च', LSHIFT(Key_C)) \ + OP(L'छ', Key_C) \ + OP(L'ज', Key_J) \ + OP(L'झ', LSHIFT(Key_J)) \ + OP(L'ञ', LSHIFT(Key_Y)) \ + OP(L'ट', Key_Q) \ + OP(L'ठ', LSHIFT(Key_Q)) \ + OP(L'ड', Key_X) \ + OP(L'ढ', LSHIFT(Key_X)) \ + OP(L'ण', LSHIFT(Key_N)) \ + OP(L'त', Key_T) \ + OP(L'थ', LSHIFT(Key_T)) \ + OP(L'द', Key_D) \ + OP(L'ध', LSHIFT(Key_D)) \ + OP(L'न', Key_N) \ + OP(L'प', Key_P) \ + OP(L'फ', LSHIFT(Key_P)) \ + OP(L'ब', Key_B) \ + OP(L'भ', LSHIFT(Key_B)) \ + OP(L'म', Key_M) \ + OP(L'य', Key_Y) \ + OP(L'र', Key_R) \ + OP(L'ल', Key_L) \ + OP(L'ळ', LSHIFT(Key_L)) \ + OP(L'व', Key_V) \ + OP(L'श', LSHIFT(Key_S)) \ + OP(L'ष', Key_Z) \ + OP(L'स', Key_S) \ + OP(L'ह', Key_H) \ + OP(L'़', LSHIFT(Key_Backtick)) \ + OP(L'ऽ', Key_Backtick) \ + OP(L'ा', Key_A) \ + OP(L'ि', Key_I) \ + OP(L'ी', LSHIFT(Key_I)) \ + OP(L'ु', Key_U) \ + OP(L'ू', LSHIFT(Key_U)) \ + OP(L'ृ', LSHIFT(Key_R)) \ + OP(L'े', Key_E) \ + OP(L'ै', LSHIFT(Key_E)) \ + OP(L'ो', Key_O) \ + OP(L'ौ', Key_W) \ + OP(L'्', Key_Slash) \ + OP(L'ॐ', Key_NonUsPound) \ + OP(L'॒', LSHIFT(Key_Minus)) \ + OP(L'।', Key_Period) \ + OP(L'॥', LSHIFT(Key_Period)) \ + OP(L'०', Key_0) \ + OP(L'१', Key_1) \ + OP(L'२', Key_2) \ + OP(L'३', Key_3) \ + OP(L'४', Key_4) \ + OP(L'५', Key_5) \ + OP(L'६', Key_6) \ + OP(L'७', Key_7) \ + OP(L'८', Key_8) \ + OP(L'९', Key_9) \ + OP(L'॰', LSHIFT(Key_0)) \ + OP(L'‌', LSHIFT(Key_Equals)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace np { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace np +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ph/capewell-dvorak-bay/keymap.h b/src/kaleidoscope/host_keymap/linux/ph/capewell-dvorak-bay/keymap.h new file mode 100644 index 0000000000..3a50e9ab74 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ph/capewell-dvorak-bay/keymap.h @@ -0,0 +1,220 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ph +// variant: capewell-dvorak-bay + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ᜀ', Key_S) \ + OP(L'ᜁ', LSHIFT(Key_D)) \ + OP(L'ᜂ', LSHIFT(Key_A)) \ + OP(L'ᜃ', Key_P) \ + OP(L'ᜄ', Key_I) \ + OP(L'ᜅ', LSHIFT(Key_L)) \ + OP(L'ᜆ', Key_K) \ + OP(L'ᜇ', Key_H) \ + OP(L'ᜈ', Key_L) \ + OP(L'ᜉ', Key_R) \ + OP(L'ᜊ', Key_Period) \ + OP(L'ᜋ', Key_M) \ + OP(L'ᜌ', Key_T) \ + OP(L'ᜍ', Key_O) \ + OP(L'ᜎ', Key_N) \ + OP(L'ᜏ', Key_Comma) \ + OP(L'ᜐ', Key_Semicolon) \ + OP(L'ᜑ', Key_J) \ + OP(L'ᜒ', Key_D) \ + OP(L'ᜓ', Key_A) \ + OP(L'᜔', Key_RightBracket) \ + OP(L'᜵', Key_W) \ + OP(L'᜶', Key_E) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ph { +namespace capewell_dvorak_bay { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace capewell_dvorak_bay +} // namespace ph +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ph/capewell-dvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/ph/capewell-dvorak/keymap.h new file mode 100644 index 0000000000..593a19b5b5 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ph/capewell-dvorak/keymap.h @@ -0,0 +1,540 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ph +// variant: capewell-dvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Slash) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_S)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_Period)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_U)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_I)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_F)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_B)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_P)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_N)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_A)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Y)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_S) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_Period) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_U) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_I) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_F) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_B) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_P) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_N) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_A) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Y) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Slash) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_S)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_Period)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_U)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_I)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_F)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_B)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_P)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_N)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_A)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Y)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_S) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_Period) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_U) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_I) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_F) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_B) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_P) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_N) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_A) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Y) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_C))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_2))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_T)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_Semicolon)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_U))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Quote)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_O)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_RightBracket)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_O))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_X))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_Z))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_LeftBracket))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_S))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ñ', RALT(LSHIFT(Key_L))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(Key_X)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_A))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'æ', RALT(Key_S)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ñ', RALT(Key_L)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_A)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'İ', RALT(LSHIFT(Key_F))) \ + OP(L'ı', RALT(Key_F)) \ + OP(L'Œ', RALT(LSHIFT(Key_D))) \ + OP(L'œ', RALT(Key_D)) \ + OP(L'Ə', RALT(LSHIFT(Key_NonUsPound))) /* U+018f, XKB_KEY_SCHWA, LATIN CAPITAL LETTER SCHWA */ \ + OP(L'ə', RALT(Key_NonUsPound)) /* U+0259, XKB_KEY_schwa, LATIN SMALL LETTER SCHWA */ \ + OP(L'̀', RALT(Key_Backtick)) \ + OP(L'́', RALT(Key_Q)) \ + OP(L'̂', RALT(LSHIFT(Key_6))) \ + OP(L'̃', RALT(LSHIFT(Key_Backtick))) \ + OP(L'̋', RALT(LSHIFT(Key_Q))) \ + OP(L'̧', RALT(Key_W)) \ + OP(L'̨', RALT(LSHIFT(Key_W))) \ + OP(L'͠', RALT(LSHIFT(Key_Quote))) \ + OP(L'‘', RALT(LSHIFT(Key_V))) \ + OP(L'’', RALT(LSHIFT(Key_Period))) \ + OP(L'“', RALT(Key_V)) \ + OP(L'”', RALT(Key_Period)) \ + OP(L'…', RALT(Key_E)) \ + OP(L'€', RALT(LSHIFT(Key_4))) \ + OP(L'₱', RALT(Key_R)) \ + OP(L'™', RALT(Key_K)) \ + OP(L'⅛', RALT(Key_7)) \ + OP(L'⅜', RALT(Key_8)) \ + OP(L'⅝', RALT(Key_9)) \ + OP(L'⅞', RALT(Key_0)) \ + OP(L'←', RALT(LSHIFT(Key_7))) \ + OP(L'↑', RALT(LSHIFT(Key_9))) \ + OP(L'→', RALT(LSHIFT(Key_8))) \ + OP(L'↓', RALT(LSHIFT(Key_0))) \ + OP(L'∓', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'␣', RALT(LSHIFT(Key_E))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_S)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_Period)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_U)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_I)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_F)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_B)) \ + OP(XKB_KEY_K, LSHIFT(Key_P)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_N)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_A)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Y)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_SCHWA, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_G)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_S) \ + OP(XKB_KEY_ae, RALT(Key_S)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Q) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_Period) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, Key_Minus) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_U) \ + OP(XKB_KEY_g, Key_I) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_F) \ + OP(XKB_KEY_j, Key_B) \ + OP(XKB_KEY_k, Key_P) \ + OP(XKB_KEY_l, Key_N) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(Key_X)) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_notsign, RALT(Key_Quote)) \ + OP(XKB_KEY_ntilde, RALT(Key_L)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_A) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_oslash, RALT(Key_A)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_plus, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_plusminus, RALT(Key_RightBracket)) \ + OP(XKB_KEY_q, Key_Y) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Q)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_registered, RALT(Key_O)) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_schwa, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_section, RALT(Key_Semicolon)) \ + OP(XKB_KEY_semicolon, Key_Slash) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_G) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_yen, RALT(Key_T)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ph { +namespace capewell_dvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace capewell_dvorak +} // namespace ph +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ph/capewell-qwerf2k6-bay/keymap.h b/src/kaleidoscope/host_keymap/linux/ph/capewell-qwerf2k6-bay/keymap.h new file mode 100644 index 0000000000..8447eb5bad --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ph/capewell-qwerf2k6-bay/keymap.h @@ -0,0 +1,220 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ph +// variant: capewell-qwerf2k6-bay + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ᜀ', Key_A) \ + OP(L'ᜁ', LSHIFT(Key_E)) \ + OP(L'ᜂ', LSHIFT(Key_J)) \ + OP(L'ᜃ', Key_I) \ + OP(L'ᜄ', Key_G) \ + OP(L'ᜅ', LSHIFT(Key_N)) \ + OP(L'ᜆ', Key_F) \ + OP(L'ᜇ', Key_D) \ + OP(L'ᜈ', Key_N) \ + OP(L'ᜉ', Key_Semicolon) \ + OP(L'ᜊ', Key_B) \ + OP(L'ᜋ', Key_M) \ + OP(L'ᜌ', Key_U) \ + OP(L'ᜍ', Key_R) \ + OP(L'ᜎ', Key_O) \ + OP(L'ᜏ', Key_W) \ + OP(L'ᜐ', Key_S) \ + OP(L'ᜑ', Key_H) \ + OP(L'ᜒ', Key_E) \ + OP(L'ᜓ', Key_J) \ + OP(L'᜔', Key_Equals) \ + OP(L'᜵', Key_Comma) \ + OP(L'᜶', Key_Period) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ph { +namespace capewell_qwerf2k6_bay { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace capewell_qwerf2k6_bay +} // namespace ph +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ph/capewell-qwerf2k6/keymap.h b/src/kaleidoscope/host_keymap/linux/ph/capewell-qwerf2k6/keymap.h new file mode 100644 index 0000000000..a64840ebe4 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ph/capewell-qwerf2k6/keymap.h @@ -0,0 +1,540 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ph +// variant: capewell-qwerf2k6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_T)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_K)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_Y)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_I)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_O)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_L)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_Semicolon)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_J)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_U)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_T) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_K) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_Y) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_I) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_O) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_L) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_Semicolon) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_J) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_U) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_T)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_K)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_Y)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_I)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_O)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_L)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_Semicolon)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_J)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_U)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_T) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_K) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_Y) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_I) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_O) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_L) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_Semicolon) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_J) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_U) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_C))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_2))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_U)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_S)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_T))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Minus)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_Equals)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_R))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_X))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_Z))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Slash))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(Key_X)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_L))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'÷', RALT(Key_Slash)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_L)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'İ', RALT(LSHIFT(Key_K))) \ + OP(L'ı', RALT(Key_K)) \ + OP(L'Œ', RALT(LSHIFT(Key_E))) \ + OP(L'œ', RALT(Key_E)) \ + OP(L'Ə', RALT(LSHIFT(Key_NonUsPound))) /* U+018f, XKB_KEY_SCHWA, LATIN CAPITAL LETTER SCHWA */ \ + OP(L'ə', RALT(Key_NonUsPound)) /* U+0259, XKB_KEY_schwa, LATIN SMALL LETTER SCHWA */ \ + OP(L'̀', RALT(Key_Backtick)) \ + OP(L'́', RALT(Key_Quote)) \ + OP(L'̂', RALT(LSHIFT(Key_6))) \ + OP(L'̃', RALT(LSHIFT(Key_Backtick))) \ + OP(L'̋', RALT(LSHIFT(Key_Quote))) \ + OP(L'̧', RALT(Key_Comma)) \ + OP(L'̨', RALT(LSHIFT(Key_Comma))) \ + OP(L'͠', RALT(LSHIFT(Key_Minus))) \ + OP(L'‘', RALT(LSHIFT(Key_V))) \ + OP(L'’', RALT(LSHIFT(Key_B))) \ + OP(L'“', RALT(Key_V)) \ + OP(L'”', RALT(Key_B)) \ + OP(L'…', RALT(Key_Period)) \ + OP(L'€', RALT(LSHIFT(Key_4))) \ + OP(L'₱', RALT(Key_Semicolon)) \ + OP(L'™', RALT(Key_F)) \ + OP(L'⅛', RALT(Key_7)) \ + OP(L'⅜', RALT(Key_8)) \ + OP(L'⅝', RALT(Key_9)) \ + OP(L'⅞', RALT(Key_0)) \ + OP(L'←', RALT(LSHIFT(Key_7))) \ + OP(L'↑', RALT(LSHIFT(Key_9))) \ + OP(L'→', RALT(LSHIFT(Key_8))) \ + OP(L'↓', RALT(LSHIFT(Key_0))) \ + OP(L'∓', RALT(LSHIFT(Key_Equals))) \ + OP(L'␣', RALT(LSHIFT(Key_Period))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_T)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_K)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_Y)) \ + OP(XKB_KEY_K, LSHIFT(Key_I)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_O)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_L)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_P, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_SCHWA, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_F)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_J)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_U)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_colon, LSHIFT(Key_P)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_division, RALT(Key_Slash)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_T) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_K) \ + OP(XKB_KEY_j, Key_Y) \ + OP(XKB_KEY_k, Key_I) \ + OP(XKB_KEY_l, Key_O) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(Key_X)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Minus)) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_L) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_oslash, RALT(Key_L)) \ + OP(XKB_KEY_p, Key_Semicolon) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_schwa, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_section, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, Key_P) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_F) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_J) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_U) \ + OP(XKB_KEY_yen, RALT(Key_U)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ph { +namespace capewell_qwerf2k6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace capewell_qwerf2k6 +} // namespace ph +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ph/colemak-bay/keymap.h b/src/kaleidoscope/host_keymap/linux/ph/colemak-bay/keymap.h new file mode 100644 index 0000000000..aac90e455f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ph/colemak-bay/keymap.h @@ -0,0 +1,220 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ph +// variant: colemak-bay + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ᜀ', Key_A) \ + OP(L'ᜁ', LSHIFT(Key_K)) \ + OP(L'ᜂ', LSHIFT(Key_I)) \ + OP(L'ᜃ', Key_N) \ + OP(L'ᜄ', Key_T) \ + OP(L'ᜅ', LSHIFT(Key_J)) \ + OP(L'ᜆ', Key_F) \ + OP(L'ᜇ', Key_G) \ + OP(L'ᜈ', Key_J) \ + OP(L'ᜉ', Key_R) \ + OP(L'ᜊ', Key_B) \ + OP(L'ᜋ', Key_M) \ + OP(L'ᜌ', Key_O) \ + OP(L'ᜍ', Key_S) \ + OP(L'ᜎ', Key_U) \ + OP(L'ᜏ', Key_W) \ + OP(L'ᜐ', Key_D) \ + OP(L'ᜑ', Key_H) \ + OP(L'ᜒ', Key_K) \ + OP(L'ᜓ', Key_I) \ + OP(L'᜔', Key_Equals) \ + OP(L'᜵', Key_Comma) \ + OP(L'᜶', Key_Period) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ph { +namespace colemak_bay { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace colemak_bay +} // namespace ph +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ph/colemak/keymap.h b/src/kaleidoscope/host_keymap/linux/ph/colemak/keymap.h new file mode 100644 index 0000000000..b3a5a32815 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ph/colemak/keymap.h @@ -0,0 +1,540 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ph +// variant: colemak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_G)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_E)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_T)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_L)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_Y)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_Semicolon)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_S)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_D)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_O)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_G) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_E) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_T) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_L) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_Y) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_Semicolon) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_S) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_D) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_O) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_G)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_E)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_T)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_L)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_Y)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_Semicolon)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_S)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_D)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_O)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_G) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_E) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_T) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_L) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_Y) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_Semicolon) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_S) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_D) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_O) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_C))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_2))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_O)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_D)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_E))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Minus)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_S)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_Equals)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_S))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_X))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_Z))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Slash))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ñ', RALT(LSHIFT(Key_J))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(Key_X)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_Semicolon))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ñ', RALT(Key_J)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'÷', RALT(Key_Slash)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_Semicolon)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'İ', RALT(LSHIFT(Key_L))) \ + OP(L'ı', RALT(Key_L)) \ + OP(L'Œ', RALT(LSHIFT(Key_K))) \ + OP(L'œ', RALT(Key_K)) \ + OP(L'Ə', RALT(LSHIFT(Key_NonUsPound))) /* U+018f, XKB_KEY_SCHWA, LATIN CAPITAL LETTER SCHWA */ \ + OP(L'ə', RALT(Key_NonUsPound)) /* U+0259, XKB_KEY_schwa, LATIN SMALL LETTER SCHWA */ \ + OP(L'̀', RALT(Key_Backtick)) \ + OP(L'́', RALT(Key_Quote)) \ + OP(L'̂', RALT(LSHIFT(Key_6))) \ + OP(L'̃', RALT(LSHIFT(Key_Backtick))) \ + OP(L'̋', RALT(LSHIFT(Key_Quote))) \ + OP(L'̧', RALT(Key_Comma)) \ + OP(L'̨', RALT(LSHIFT(Key_Comma))) \ + OP(L'͠', RALT(LSHIFT(Key_Minus))) \ + OP(L'‘', RALT(LSHIFT(Key_V))) \ + OP(L'’', RALT(LSHIFT(Key_B))) \ + OP(L'“', RALT(Key_V)) \ + OP(L'”', RALT(Key_B)) \ + OP(L'…', RALT(Key_Period)) \ + OP(L'€', RALT(LSHIFT(Key_4))) \ + OP(L'₱', RALT(Key_R)) \ + OP(L'™', RALT(Key_F)) \ + OP(L'⅛', RALT(Key_7)) \ + OP(L'⅜', RALT(Key_8)) \ + OP(L'⅝', RALT(Key_9)) \ + OP(L'⅞', RALT(Key_0)) \ + OP(L'←', RALT(LSHIFT(Key_7))) \ + OP(L'↑', RALT(LSHIFT(Key_9))) \ + OP(L'→', RALT(LSHIFT(Key_8))) \ + OP(L'↓', RALT(LSHIFT(Key_0))) \ + OP(L'∓', RALT(LSHIFT(Key_Equals))) \ + OP(L'␣', RALT(LSHIFT(Key_Period))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_G)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_K)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_E)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_T)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_L)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_Y)) \ + OP(XKB_KEY_K, LSHIFT(Key_N)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_U)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_J)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_S)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_D)) \ + OP(XKB_KEY_SCHWA, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_F)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_I)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_O)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_colon, LSHIFT(Key_P)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_d, Key_G) \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_division, RALT(Key_Slash)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_K) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_E) \ + OP(XKB_KEY_g, Key_T) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_L) \ + OP(XKB_KEY_j, Key_Y) \ + OP(XKB_KEY_k, Key_N) \ + OP(XKB_KEY_l, Key_U) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(Key_X)) \ + OP(XKB_KEY_n, Key_J) \ + OP(XKB_KEY_notsign, RALT(Key_Minus)) \ + OP(XKB_KEY_ntilde, RALT(Key_J)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_Semicolon) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_oslash, RALT(Key_Semicolon)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_S) \ + OP(XKB_KEY_registered, RALT(Key_S)) \ + OP(XKB_KEY_s, Key_D) \ + OP(XKB_KEY_schwa, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_section, RALT(Key_D)) \ + OP(XKB_KEY_semicolon, Key_P) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_F) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_I) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_O) \ + OP(XKB_KEY_yen, RALT(Key_O)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ph { +namespace colemak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace colemak +} // namespace ph +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ph/dvorak-bay/keymap.h b/src/kaleidoscope/host_keymap/linux/ph/dvorak-bay/keymap.h new file mode 100644 index 0000000000..d85a0e3e99 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ph/dvorak-bay/keymap.h @@ -0,0 +1,220 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ph +// variant: dvorak-bay + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ᜀ', Key_A) \ + OP(L'ᜁ', LSHIFT(Key_D)) \ + OP(L'ᜂ', LSHIFT(Key_S)) \ + OP(L'ᜃ', Key_V) \ + OP(L'ᜄ', Key_U) \ + OP(L'ᜅ', LSHIFT(Key_L)) \ + OP(L'ᜆ', Key_K) \ + OP(L'ᜇ', Key_H) \ + OP(L'ᜈ', Key_L) \ + OP(L'ᜉ', Key_R) \ + OP(L'ᜊ', Key_N) \ + OP(L'ᜋ', Key_M) \ + OP(L'ᜌ', Key_T) \ + OP(L'ᜍ', Key_O) \ + OP(L'ᜎ', Key_P) \ + OP(L'ᜏ', Key_Comma) \ + OP(L'ᜐ', Key_Semicolon) \ + OP(L'ᜑ', Key_J) \ + OP(L'ᜒ', Key_D) \ + OP(L'ᜓ', Key_S) \ + OP(L'᜔', Key_RightBracket) \ + OP(L'᜵', Key_W) \ + OP(L'᜶', Key_E) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ph { +namespace dvorak_bay { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak_bay +} // namespace ph +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ph/dvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/ph/dvorak/keymap.h new file mode 100644 index 0000000000..41236bd6e9 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ph/dvorak/keymap.h @@ -0,0 +1,540 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ph +// variant: dvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_I))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_2))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_T)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_Semicolon)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_I)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_Y))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Slash)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Quote)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_O)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_RightBracket)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_O))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_B))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_Slash))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_LeftBracket))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ñ', RALT(LSHIFT(Key_L))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(Key_B)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_S))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ñ', RALT(Key_L)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_S)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'İ', RALT(LSHIFT(Key_G))) \ + OP(L'ı', RALT(Key_G)) \ + OP(L'Œ', RALT(LSHIFT(Key_D))) \ + OP(L'œ', RALT(Key_D)) \ + OP(L'Ə', RALT(LSHIFT(Key_NonUsPound))) /* U+018f, XKB_KEY_SCHWA, LATIN CAPITAL LETTER SCHWA */ \ + OP(L'ə', RALT(Key_NonUsPound)) /* U+0259, XKB_KEY_schwa, LATIN SMALL LETTER SCHWA */ \ + OP(L'̀', RALT(Key_Backtick)) \ + OP(L'́', RALT(Key_Q)) \ + OP(L'̂', RALT(LSHIFT(Key_6))) \ + OP(L'̃', RALT(LSHIFT(Key_Backtick))) \ + OP(L'̋', RALT(LSHIFT(Key_Q))) \ + OP(L'̧', RALT(Key_W)) \ + OP(L'̨', RALT(LSHIFT(Key_W))) \ + OP(L'͠', RALT(LSHIFT(Key_Quote))) \ + OP(L'‘', RALT(LSHIFT(Key_Period))) \ + OP(L'’', RALT(LSHIFT(Key_N))) \ + OP(L'“', RALT(Key_Period)) \ + OP(L'”', RALT(Key_N)) \ + OP(L'…', RALT(Key_E)) \ + OP(L'€', RALT(LSHIFT(Key_4))) \ + OP(L'₱', RALT(Key_R)) \ + OP(L'™', RALT(Key_K)) \ + OP(L'⅛', RALT(Key_7)) \ + OP(L'⅜', RALT(Key_8)) \ + OP(L'⅝', RALT(Key_9)) \ + OP(L'⅞', RALT(Key_0)) \ + OP(L'←', RALT(LSHIFT(Key_7))) \ + OP(L'↑', RALT(LSHIFT(Key_9))) \ + OP(L'→', RALT(LSHIFT(Key_8))) \ + OP(L'↓', RALT(LSHIFT(Key_0))) \ + OP(L'∓', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'␣', RALT(LSHIFT(Key_E))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_SCHWA, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Q) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, Key_Minus) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Z)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_copyright, RALT(Key_I)) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Slash)) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(Key_B)) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_notsign, RALT(Key_Quote)) \ + OP(XKB_KEY_ntilde, RALT(Key_L)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_oslash, RALT(Key_S)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_plus, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_plusminus, RALT(Key_RightBracket)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Q)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_registered, RALT(Key_O)) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_schwa, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_section, RALT(Key_Semicolon)) \ + OP(XKB_KEY_semicolon, Key_Z) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_yen, RALT(Key_T)) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ph { +namespace dvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak +} // namespace ph +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ph/qwerty-bay/keymap.h b/src/kaleidoscope/host_keymap/linux/ph/qwerty-bay/keymap.h new file mode 100644 index 0000000000..d225dff3d0 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ph/qwerty-bay/keymap.h @@ -0,0 +1,220 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ph +// variant: qwerty-bay + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ᜀ', Key_A) \ + OP(L'ᜁ', LSHIFT(Key_E)) \ + OP(L'ᜂ', LSHIFT(Key_U)) \ + OP(L'ᜃ', Key_K) \ + OP(L'ᜄ', Key_G) \ + OP(L'ᜅ', LSHIFT(Key_N)) \ + OP(L'ᜆ', Key_T) \ + OP(L'ᜇ', Key_D) \ + OP(L'ᜈ', Key_N) \ + OP(L'ᜉ', Key_P) \ + OP(L'ᜊ', Key_B) \ + OP(L'ᜋ', Key_M) \ + OP(L'ᜌ', Key_Y) \ + OP(L'ᜍ', Key_R) \ + OP(L'ᜎ', Key_L) \ + OP(L'ᜏ', Key_W) \ + OP(L'ᜐ', Key_S) \ + OP(L'ᜑ', Key_H) \ + OP(L'ᜒ', Key_E) \ + OP(L'ᜓ', Key_U) \ + OP(L'᜔', Key_Equals) \ + OP(L'᜵', Key_Comma) \ + OP(L'᜶', Key_Period) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ph { +namespace qwerty_bay { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace qwerty_bay +} // namespace ph +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ph/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/ph/standard/keymap.h new file mode 100644 index 0000000000..34bd7b3ae9 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ph/standard/keymap.h @@ -0,0 +1,540 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ph +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_C))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(LSHIFT(Key_2))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_Y)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_S)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Minus)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_Equals)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_R))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_X))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_Z))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Slash))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(Key_X)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'÷', RALT(Key_Slash)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'İ', RALT(LSHIFT(Key_I))) \ + OP(L'ı', RALT(Key_I)) \ + OP(L'Œ', RALT(LSHIFT(Key_E))) \ + OP(L'œ', RALT(Key_E)) \ + OP(L'Ə', RALT(LSHIFT(Key_NonUsPound))) /* U+018f, XKB_KEY_SCHWA, LATIN CAPITAL LETTER SCHWA */ \ + OP(L'ə', RALT(Key_NonUsPound)) /* U+0259, XKB_KEY_schwa, LATIN SMALL LETTER SCHWA */ \ + OP(L'̀', RALT(Key_Backtick)) \ + OP(L'́', RALT(Key_Quote)) \ + OP(L'̂', RALT(LSHIFT(Key_6))) \ + OP(L'̃', RALT(LSHIFT(Key_Backtick))) \ + OP(L'̋', RALT(LSHIFT(Key_Quote))) \ + OP(L'̧', RALT(Key_Comma)) \ + OP(L'̨', RALT(LSHIFT(Key_Comma))) \ + OP(L'͠', RALT(LSHIFT(Key_Minus))) \ + OP(L'‘', RALT(LSHIFT(Key_V))) \ + OP(L'’', RALT(LSHIFT(Key_B))) \ + OP(L'“', RALT(Key_V)) \ + OP(L'”', RALT(Key_B)) \ + OP(L'…', RALT(Key_Period)) \ + OP(L'€', RALT(LSHIFT(Key_4))) \ + OP(L'₱', RALT(Key_P)) \ + OP(L'™', RALT(Key_T)) \ + OP(L'⅛', RALT(Key_7)) \ + OP(L'⅜', RALT(Key_8)) \ + OP(L'⅝', RALT(Key_9)) \ + OP(L'⅞', RALT(Key_0)) \ + OP(L'←', RALT(LSHIFT(Key_7))) \ + OP(L'↑', RALT(LSHIFT(Key_9))) \ + OP(L'→', RALT(LSHIFT(Key_8))) \ + OP(L'↓', RALT(LSHIFT(Key_0))) \ + OP(L'∓', RALT(LSHIFT(Key_Equals))) \ + OP(L'␣', RALT(LSHIFT(Key_Period))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_SCHWA, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_division, RALT(Key_Slash)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(Key_X)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Minus)) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_schwa, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_section, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_Y)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ph { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace ph +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pk/ara/keymap.h b/src/kaleidoscope/host_keymap/linux/pk/ara/keymap.h new file mode 100644 index 0000000000..5f20909cf4 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pk/ara/keymap.h @@ -0,0 +1,312 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pk +// variant: ara + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('', Key_Slash) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) \ + OP('"', LSHIFT(Key_Quote)) \ + OP('(', LSHIFT(Key_0)) \ + OP(')', LSHIFT(Key_9)) \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(':', LSHIFT(Key_Semicolon)) \ + OP('[', Key_RightBracket) \ + OP(']', Key_LeftBracket) \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'', Key_Slash) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) \ + OP(L'"', LSHIFT(Key_Quote)) \ + OP(L'(', LSHIFT(Key_0)) \ + OP(L')', LSHIFT(Key_9)) \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L':', LSHIFT(Key_Semicolon)) \ + OP(L'[', Key_RightBracket) \ + OP(L']', Key_LeftBracket) \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', LSHIFT(Key_W)) \ + OP(L'¥', LSHIFT(Key_E)) \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'؁', LSHIFT(Key_Y)) \ + OP(L'،', Key_Comma) \ + OP(L'؎', Key_NonUsPound) \ + OP(L'ؒ', LSHIFT(Key_B)) \ + OP(L'ؓ', LSHIFT(Key_L)) \ + OP(L'ؔ', LSHIFT(Key_NonUsPound)) \ + OP(L'؛', Key_Semicolon) \ + OP(L'؟', LSHIFT(Key_Slash)) \ + OP(L'ء', Key_U) \ + OP(L'آ', LSHIFT(Key_Equals)) \ + OP(L'أ', Key_Minus) \ + OP(L'ؤ', Key_Equals) \ + OP(L'ئ', LSHIFT(Key_4)) \ + OP(L'ا', Key_A) \ + OP(L'ب', Key_B) \ + OP(L'ت', Key_T) \ + OP(L'ث', LSHIFT(Key_C)) \ + OP(L'ج', Key_J) \ + OP(L'ح', LSHIFT(Key_H)) \ + OP(L'خ', LSHIFT(Key_K)) \ + OP(L'د', Key_D) \ + OP(L'ذ', LSHIFT(Key_Z)) \ + OP(L'ر', Key_R) \ + OP(L'ز', Key_Z) \ + OP(L'س', Key_S) \ + OP(L'ش', Key_X) \ + OP(L'ص', LSHIFT(Key_S)) \ + OP(L'ض', LSHIFT(Key_J)) \ + OP(L'ط', Key_V) \ + OP(L'ظ', LSHIFT(Key_V)) \ + OP(L'ع', Key_E) \ + OP(L'غ', LSHIFT(Key_G)) \ + OP(L'ف', Key_F) \ + OP(L'ق', Key_Q) \ + OP(L'ل', Key_L) \ + OP(L'م', Key_M) \ + OP(L'ن', Key_N) \ + OP(L'و', Key_W) \ + OP(L'ً', LSHIFT(Key_Backtick)) \ + OP(L'ٌ', LSHIFT(Key_8)) \ + OP(L'ٍ', Key_Backtick) \ + OP(L'َ', LSHIFT(Key_Period)) \ + OP(L'ُ', LSHIFT(Key_P)) \ + OP(L'ِ', LSHIFT(Key_Comma)) \ + OP(L'ّ', LSHIFT(Key_Minus)) \ + OP(L'ْ', LSHIFT(Key_Q)) \ + OP(L'ٓ', LSHIFT(Key_A)) /* U+0653, XKB_KEY_Arabic_madda_above, ARABIC MADDAH ABOVE */ \ + OP(L'ٔ', LSHIFT(Key_7)) /* U+0654, XKB_KEY_Arabic_hamza_above, ARABIC HAMZA ABOVE */ \ + OP(L'ٰ', Key_Quote) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٹ', LSHIFT(Key_T)) /* U+0679, XKB_KEY_Arabic_tteh, ARABIC LETTER TTEH */ \ + OP(L'پ', Key_P) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', Key_C) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ڈ', LSHIFT(Key_D)) /* U+0688, XKB_KEY_Arabic_ddal, ARABIC LETTER DDAL */ \ + OP(L'ڑ', LSHIFT(Key_R)) /* U+0691, XKB_KEY_Arabic_rreh, ARABIC LETTER RREH */ \ + OP(L'ژ', LSHIFT(Key_X)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ک', Key_K) /* U+06a9, XKB_KEY_Arabic_keheh, ARABIC LETTER KEHEH */ \ + OP(L'گ', Key_G) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'ں', LSHIFT(Key_N)) /* U+06ba, XKB_KEY_Arabic_noon_ghunna, ARABIC LETTER NOON GHUNNA */ \ + OP(L'ھ', Key_H) /* U+06be, XKB_KEY_Arabic_heh_doachashmee, ARABIC LETTER HEH DOACHASHMEE */ \ + OP(L'ہ', Key_O) /* U+06c1, XKB_KEY_Arabic_heh_goal, ARABIC LETTER HEH GOAL */ \ + OP(L'ۃ', LSHIFT(Key_O)) \ + OP(L'ی', Key_I) /* U+06cc, XKB_KEY_Farsi_yeh, ARABIC LETTER FARSI YEH */ \ + OP(L'ے', Key_Y) /* U+06d2, XKB_KEY_Arabic_yeh_baree, ARABIC LETTER YEH BARREE */ \ + OP(L'۔', Key_Period) /* U+06d4, XKB_KEY_Arabic_fullstop, ARABIC FULL STOP */ \ + OP(L'ۖ', LSHIFT(Key_6)) \ + OP(L'۰', Key_0) /* U+06f0, XKB_KEY_Farsi_0, EXTENDED ARABIC-INDIC DIGIT ZERO */ \ + OP(L'۱', Key_1) /* U+06f1, XKB_KEY_Farsi_1, EXTENDED ARABIC-INDIC DIGIT ONE */ \ + OP(L'۲', Key_2) /* U+06f2, XKB_KEY_Farsi_2, EXTENDED ARABIC-INDIC DIGIT TWO */ \ + OP(L'۳', Key_3) /* U+06f3, XKB_KEY_Farsi_3, EXTENDED ARABIC-INDIC DIGIT THREE */ \ + OP(L'۴', Key_4) /* U+06f4, XKB_KEY_Farsi_4, EXTENDED ARABIC-INDIC DIGIT FOUR */ \ + OP(L'۵', Key_5) /* U+06f5, XKB_KEY_Farsi_5, EXTENDED ARABIC-INDIC DIGIT FIVE */ \ + OP(L'۶', Key_6) /* U+06f6, XKB_KEY_Farsi_6, EXTENDED ARABIC-INDIC DIGIT SIX */ \ + OP(L'۷', Key_7) /* U+06f7, XKB_KEY_Farsi_7, EXTENDED ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'۸', Key_8) /* U+06f8, XKB_KEY_Farsi_8, EXTENDED ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'۹', Key_9) /* U+06f9, XKB_KEY_Farsi_9, EXTENDED ARABIC-INDIC DIGIT NINE */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_Arabic_ddal, LSHIFT(Key_D)) \ + OP(XKB_KEY_Arabic_fullstop, Key_Period) \ + OP(XKB_KEY_Arabic_gaf, Key_G) \ + OP(XKB_KEY_Arabic_hamza_above, LSHIFT(Key_7)) \ + OP(XKB_KEY_Arabic_heh_doachashmee, Key_H) \ + OP(XKB_KEY_Arabic_heh_goal, Key_O) \ + OP(XKB_KEY_Arabic_jeh, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_keheh, Key_K) \ + OP(XKB_KEY_Arabic_madda_above, LSHIFT(Key_A)) \ + OP(XKB_KEY_Arabic_noon_ghunna, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_peh, Key_P) \ + OP(XKB_KEY_Arabic_rreh, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_superscript_alef, Key_Quote) \ + OP(XKB_KEY_Arabic_tcheh, Key_C) \ + OP(XKB_KEY_Arabic_tteh, LSHIFT(Key_T)) \ + OP(XKB_KEY_Arabic_yeh_baree, Key_Y) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Farsi_0, Key_0) \ + OP(XKB_KEY_Farsi_1, Key_1) \ + OP(XKB_KEY_Farsi_2, Key_2) \ + OP(XKB_KEY_Farsi_3, Key_3) \ + OP(XKB_KEY_Farsi_4, Key_4) \ + OP(XKB_KEY_Farsi_5, Key_5) \ + OP(XKB_KEY_Farsi_6, Key_6) \ + OP(XKB_KEY_Farsi_7, Key_7) \ + OP(XKB_KEY_Farsi_8, Key_8) \ + OP(XKB_KEY_Farsi_9, Key_9) \ + OP(XKB_KEY_Farsi_yeh, Key_I) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pk { +namespace ara { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ara +} // namespace pk +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pk/snd/keymap.h b/src/kaleidoscope/host_keymap/linux/pk/snd/keymap.h new file mode 100644 index 0000000000..ff9258fe2c --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pk/snd/keymap.h @@ -0,0 +1,330 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pk +// variant: snd + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_L)) \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', RALT(Key_Equals)) \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('_', LSHIFT(Key_Minus)) \ + OP('|', RALT(Key_NonUsPound)) \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_L)) \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', RALT(Key_Equals)) \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'_', LSHIFT(Key_Minus)) \ + OP(L'|', RALT(Key_NonUsPound)) \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'،', Key_Comma) \ + OP(L'ؐ', RALT(Key_1)) \ + OP(L'ؑ', RALT(Key_2)) \ + OP(L'ؒ', RALT(Key_4)) \ + OP(L'ؓ', RALT(Key_3)) \ + OP(L'؛', LSHIFT(Key_Semicolon)) \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', LSHIFT(Key_3)) \ + OP(L'آ', LSHIFT(Key_A)) \ + OP(L'ؤ', RALT(Key_V)) \ + OP(L'ئ', Key_Slash) \ + OP(L'ا', Key_A) \ + OP(L'ب', Key_B) \ + OP(L'ة', RALT(Key_T)) \ + OP(L'ت', Key_T) \ + OP(L'ث', LSHIFT(Key_Y)) \ + OP(L'ج', Key_J) \ + OP(L'ح', LSHIFT(Key_H)) \ + OP(L'خ', Key_X) \ + OP(L'د', Key_D) \ + OP(L'ذ', LSHIFT(Key_Z)) \ + OP(L'ر', Key_R) \ + OP(L'ز', Key_Z) \ + OP(L'س', Key_S) \ + OP(L'ش', LSHIFT(Key_S)) \ + OP(L'ص', Key_W) \ + OP(L'ض', LSHIFT(Key_W)) \ + OP(L'ط', Key_C) \ + OP(L'ظ', LSHIFT(Key_C)) \ + OP(L'ع', Key_U) \ + OP(L'غ', LSHIFT(Key_U)) \ + OP(L'ـ', LSHIFT(Key_Quote)) \ + OP(L'ف', Key_F) \ + OP(L'ق', Key_Q) \ + OP(L'ل', Key_L) \ + OP(L'م', Key_M) \ + OP(L'ن', Key_N) \ + OP(L'ه', Key_H) \ + OP(L'و', Key_O) \ + OP(L'ى', RALT(Key_A)) \ + OP(L'ي', Key_E) \ + OP(L'ً', RALT(Key_Q)) \ + OP(L'َ', LSHIFT(Key_Q)) \ + OP(L'ُ', LSHIFT(Key_O)) \ + OP(L'ِ', LSHIFT(Key_E)) \ + OP(L'ّ', LSHIFT(Key_X)) \ + OP(L'ْ', RALT(Key_Z)) \ + OP(L'ٖ', RALT(Key_E)) \ + OP(L'ٗ', RALT(Key_O)) \ + OP(L'ٰ', LSHIFT(Key_2)) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٺ', LSHIFT(Key_NonUsPound)) \ + OP(L'ٻ', LSHIFT(Key_B)) \ + OP(L'ٽ', LSHIFT(Key_T)) \ + OP(L'پ', Key_P) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'ٿ', Key_Y) \ + OP(L'ڀ', Key_V) \ + OP(L'ڃ', LSHIFT(Key_LeftBracket)) \ + OP(L'ڄ', LSHIFT(Key_RightBracket)) \ + OP(L'چ', Key_RightBracket) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ڇ', Key_LeftBracket) \ + OP(L'ڊ', LSHIFT(Key_D)) \ + OP(L'ڌ', Key_Equals) \ + OP(L'ڍ', Key_NonUsPound) \ + OP(L'ڏ', Key_Minus) \ + OP(L'ڙ', LSHIFT(Key_R)) \ + OP(L'ڦ', LSHIFT(Key_P)) \ + OP(L'ک', Key_Semicolon) /* U+06a9, XKB_KEY_Arabic_keheh, ARABIC LETTER KEHEH */ \ + OP(L'ڪ', Key_K) \ + OP(L'گ', Key_G) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'ڱ', Key_Quote) \ + OP(L'ڳ', Key_I) \ + OP(L'ڻ', LSHIFT(Key_N)) \ + OP(L'ھ', LSHIFT(Key_I)) /* U+06be, XKB_KEY_Arabic_heh_doachashmee, ARABIC LETTER HEH DOACHASHMEE */ \ + OP(L'ہ', RALT(Key_H)) /* U+06c1, XKB_KEY_Arabic_heh_goal, ARABIC LETTER HEH GOAL */ \ + OP(L'۔', RALT(Key_Period)) /* U+06d4, XKB_KEY_Arabic_fullstop, ARABIC FULL STOP */ \ + OP(L'ۡ', LSHIFT(Key_K)) \ + OP(L'۽', LSHIFT(Key_7)) \ + OP(L'۾', LSHIFT(Key_M)) \ + OP(L'‌', RALT(Key_X)) \ + OP(L'‍', RALT(Key_C)) \ + OP(L'‎', RALT(Key_N)) \ + OP(L'‏', RALT(Key_Comma)) \ + OP(L'‘', LSHIFT(Key_Backtick)) \ + OP(L'’', Key_Backtick) \ + OP(L'“', LSHIFT(Key_Comma)) \ + OP(L'”', LSHIFT(Key_Period)) \ + OP(L'•', RALT(Key_6)) \ + OP(L'…', RALT(Key_5)) \ + OP(L'﷡', RALT(Key_B)) \ + OP(L'﷣', RALT(Key_U)) \ + OP(L'﷤', RALT(Key_I)) \ + OP(L'﷥', RALT(Key_Y)) \ + OP(L'﷦', RALT(Key_R)) \ + OP(L'ﷴ', RALT(Key_M)) \ + OP(L'ﷺ', RALT(Key_W)) \ + OP(L'ﷻ', RALT(Key_J)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_fullstop, RALT(Key_Period)) \ + OP(XKB_KEY_Arabic_gaf, Key_G) \ + OP(XKB_KEY_Arabic_heh_doachashmee, LSHIFT(Key_I)) \ + OP(XKB_KEY_Arabic_heh_goal, RALT(Key_H)) \ + OP(XKB_KEY_Arabic_keheh, Key_Semicolon) \ + OP(XKB_KEY_Arabic_peh, Key_P) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_superscript_alef, LSHIFT(Key_2)) \ + OP(XKB_KEY_Arabic_tcheh, Key_RightBracket) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pk { +namespace snd { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace snd +} // namespace pk +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pk/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/pk/standard/keymap.h new file mode 100644 index 0000000000..98950183fc --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pk/standard/keymap.h @@ -0,0 +1,316 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pk +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) \ + OP('"', LSHIFT(Key_Quote)) \ + OP('#', LSHIFT(Key_3)) \ + OP('$', LSHIFT(Key_4)) \ + OP('%', LSHIFT(Key_5)) \ + OP('&', LSHIFT(Key_7)) \ + OP(''', Key_Quote) \ + OP('(', LSHIFT(Key_0)) \ + OP(')', LSHIFT(Key_9)) \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_Minus) \ + OP('.', LSHIFT(Key_B)) \ + OP('/', Key_Slash) \ + OP('0', Key_0) \ + OP('1', Key_1) \ + OP('2', Key_2) \ + OP('3', Key_3) \ + OP('4', Key_4) \ + OP('5', Key_5) \ + OP('6', Key_6) \ + OP('7', Key_7) \ + OP('8', Key_8) \ + OP('9', Key_9) \ + OP(':', LSHIFT(Key_Semicolon)) \ + OP('<', LSHIFT(Key_Comma)) \ + OP('=', Key_Equals) \ + OP('>', LSHIFT(Key_Period)) \ + OP('@', LSHIFT(Key_2)) \ + OP('[', Key_RightBracket) \ + OP('\', Key_NonUsPound) \ + OP(']', Key_LeftBracket) \ + OP('^', LSHIFT(Key_6)) \ + OP('_', LSHIFT(Key_Minus)) \ + OP('{', LSHIFT(Key_RightBracket)) \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_LeftBracket)) \ + OP('~', LSHIFT(Key_Backtick)) \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) \ + OP(L'"', LSHIFT(Key_Quote)) \ + OP(L'#', LSHIFT(Key_3)) \ + OP(L'$', LSHIFT(Key_4)) \ + OP(L'%', LSHIFT(Key_5)) \ + OP(L'&', LSHIFT(Key_7)) \ + OP(L''', Key_Quote) \ + OP(L'(', LSHIFT(Key_0)) \ + OP(L')', LSHIFT(Key_9)) \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_Minus) \ + OP(L'.', LSHIFT(Key_B)) \ + OP(L'/', Key_Slash) \ + OP(L'0', Key_0) \ + OP(L'1', Key_1) \ + OP(L'2', Key_2) \ + OP(L'3', Key_3) \ + OP(L'4', Key_4) \ + OP(L'5', Key_5) \ + OP(L'6', Key_6) \ + OP(L'7', Key_7) \ + OP(L'8', Key_8) \ + OP(L'9', Key_9) \ + OP(L':', LSHIFT(Key_Semicolon)) \ + OP(L'<', LSHIFT(Key_Comma)) \ + OP(L'=', Key_Equals) \ + OP(L'>', LSHIFT(Key_Period)) \ + OP(L'@', LSHIFT(Key_2)) \ + OP(L'[', Key_RightBracket) \ + OP(L'\', Key_NonUsPound) \ + OP(L']', Key_LeftBracket) \ + OP(L'^', LSHIFT(Key_6)) \ + OP(L'_', LSHIFT(Key_Minus)) \ + OP(L'{', LSHIFT(Key_RightBracket)) \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_LeftBracket)) \ + OP(L'~', LSHIFT(Key_Backtick)) \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'،', Key_Comma) \ + OP(L'؛', Key_Semicolon) \ + OP(L'؟', LSHIFT(Key_Slash)) \ + OP(L'ء', Key_U) \ + OP(L'آ', LSHIFT(Key_A)) \ + OP(L'ؤ', LSHIFT(Key_W)) \ + OP(L'ئ', LSHIFT(Key_U)) \ + OP(L'ا', Key_A) \ + OP(L'ب', Key_B) \ + OP(L'ت', Key_T) \ + OP(L'ث', LSHIFT(Key_C)) \ + OP(L'ج', Key_J) \ + OP(L'ح', Key_H) \ + OP(L'خ', LSHIFT(Key_K)) \ + OP(L'د', Key_D) \ + OP(L'ذ', LSHIFT(Key_Z)) \ + OP(L'ر', Key_R) \ + OP(L'ز', Key_Z) \ + OP(L'س', Key_S) \ + OP(L'ش', Key_X) \ + OP(L'ص', LSHIFT(Key_S)) \ + OP(L'ض', LSHIFT(Key_J)) \ + OP(L'ط', Key_V) \ + OP(L'ظ', LSHIFT(Key_V)) \ + OP(L'ع', Key_E) \ + OP(L'غ', LSHIFT(Key_G)) \ + OP(L'ف', Key_F) \ + OP(L'ق', Key_Q) \ + OP(L'ل', Key_L) \ + OP(L'م', Key_M) \ + OP(L'ن', Key_N) \ + OP(L'و', Key_W) \ + OP(L'ً', Key_Backtick) \ + OP(L'َ', LSHIFT(Key_Y)) \ + OP(L'ُ', LSHIFT(Key_P)) \ + OP(L'ِ', LSHIFT(Key_I)) \ + OP(L'ّ', LSHIFT(Key_F)) \ + OP(L'ْ', LSHIFT(Key_Q)) \ + OP(L'ٔ', LSHIFT(Key_L)) /* U+0654, XKB_KEY_Arabic_hamza_above, ARABIC HAMZA ABOVE */ \ + OP(L'٘', LSHIFT(Key_M)) \ + OP(L'ٰ', LSHIFT(Key_E)) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٹ', LSHIFT(Key_T)) /* U+0679, XKB_KEY_Arabic_tteh, ARABIC LETTER TTEH */ \ + OP(L'پ', Key_P) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', Key_C) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ڈ', LSHIFT(Key_D)) /* U+0688, XKB_KEY_Arabic_ddal, ARABIC LETTER DDAL */ \ + OP(L'ڑ', LSHIFT(Key_R)) /* U+0691, XKB_KEY_Arabic_rreh, ARABIC LETTER RREH */ \ + OP(L'ژ', LSHIFT(Key_X)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ک', Key_K) /* U+06a9, XKB_KEY_Arabic_keheh, ARABIC LETTER KEHEH */ \ + OP(L'گ', Key_G) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'ں', LSHIFT(Key_N)) /* U+06ba, XKB_KEY_Arabic_noon_ghunna, ARABIC LETTER NOON GHUNNA */ \ + OP(L'ھ', LSHIFT(Key_H)) /* U+06be, XKB_KEY_Arabic_heh_doachashmee, ARABIC LETTER HEH DOACHASHMEE */ \ + OP(L'ہ', Key_O) /* U+06c1, XKB_KEY_Arabic_heh_goal, ARABIC LETTER HEH GOAL */ \ + OP(L'ۃ', LSHIFT(Key_O)) \ + OP(L'ی', Key_I) /* U+06cc, XKB_KEY_Farsi_yeh, ARABIC LETTER FARSI YEH */ \ + OP(L'ے', Key_Y) /* U+06d2, XKB_KEY_Arabic_yeh_baree, ARABIC LETTER YEH BARREE */ \ + OP(L'۔', Key_Period) /* U+06d4, XKB_KEY_Arabic_fullstop, ARABIC FULL STOP */ \ + OP(L'‌', RALT(Key_W)) \ + OP(L'‍', RALT(Key_Q)) \ + OP(L'‎', RALT(Key_Z)) \ + OP(L'‏', RALT(Key_M)) \ + OP(L'‪', RALT(Key_X)) \ + OP(L'‫', RALT(Key_N)) \ + OP(L'‬', RALT(Key_V)) \ + OP(L'‭', RALT(Key_C)) \ + OP(L'‮', RALT(Key_B)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_ddal, LSHIFT(Key_D)) \ + OP(XKB_KEY_Arabic_fullstop, Key_Period) \ + OP(XKB_KEY_Arabic_gaf, Key_G) \ + OP(XKB_KEY_Arabic_hamza_above, LSHIFT(Key_L)) \ + OP(XKB_KEY_Arabic_heh_doachashmee, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_heh_goal, Key_O) \ + OP(XKB_KEY_Arabic_jeh, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_keheh, Key_K) \ + OP(XKB_KEY_Arabic_noon_ghunna, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_peh, Key_P) \ + OP(XKB_KEY_Arabic_rreh, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_superscript_alef, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_tcheh, Key_C) \ + OP(XKB_KEY_Arabic_tteh, LSHIFT(Key_T)) \ + OP(XKB_KEY_Arabic_yeh_baree, Key_Y) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Farsi_yeh, Key_I) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pk { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace pk +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pk/urd-crulp/keymap.h b/src/kaleidoscope/host_keymap/linux/pk/urd-crulp/keymap.h new file mode 100644 index 0000000000..2d19eaa220 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pk/urd-crulp/keymap.h @@ -0,0 +1,340 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pk +// variant: urd-crulp + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', RALT(Key_1)) \ + OP('"', LSHIFT(Key_Quote)) \ + OP('#', RALT(Key_3)) \ + OP('&', RALT(Key_7)) \ + OP(''', Key_Quote) \ + OP('(', RALT(Key_0)) \ + OP(')', RALT(Key_9)) \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_Minus) \ + OP('.', LSHIFT(Key_B)) \ + OP('/', Key_Slash) \ + OP('0', LSHIFT(Key_0)) \ + OP('1', LSHIFT(Key_1)) \ + OP('2', LSHIFT(Key_2)) \ + OP('3', LSHIFT(Key_3)) \ + OP('4', LSHIFT(Key_4)) \ + OP('5', LSHIFT(Key_5)) \ + OP('6', LSHIFT(Key_6)) \ + OP('7', LSHIFT(Key_7)) \ + OP('8', LSHIFT(Key_8)) \ + OP('9', LSHIFT(Key_9)) \ + OP(':', LSHIFT(Key_Semicolon)) \ + OP('<', RALT(Key_Comma)) \ + OP('=', Key_Equals) \ + OP('>', RALT(Key_Period)) \ + OP('@', RALT(Key_2)) \ + OP('[', Key_RightBracket) \ + OP('\', Key_NonUsPound) \ + OP(']', Key_LeftBracket) \ + OP('_', LSHIFT(Key_Minus)) \ + OP('{', LSHIFT(Key_RightBracket)) \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_LeftBracket)) \ + OP('~', Key_Backtick) \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', RALT(Key_1)) \ + OP(L'"', LSHIFT(Key_Quote)) \ + OP(L'#', RALT(Key_3)) \ + OP(L'&', RALT(Key_7)) \ + OP(L''', Key_Quote) \ + OP(L'(', RALT(Key_0)) \ + OP(L')', RALT(Key_9)) \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_Minus) \ + OP(L'.', LSHIFT(Key_B)) \ + OP(L'/', Key_Slash) \ + OP(L'0', LSHIFT(Key_0)) \ + OP(L'1', LSHIFT(Key_1)) \ + OP(L'2', LSHIFT(Key_2)) \ + OP(L'3', LSHIFT(Key_3)) \ + OP(L'4', LSHIFT(Key_4)) \ + OP(L'5', LSHIFT(Key_5)) \ + OP(L'6', LSHIFT(Key_6)) \ + OP(L'7', LSHIFT(Key_7)) \ + OP(L'8', LSHIFT(Key_8)) \ + OP(L'9', LSHIFT(Key_9)) \ + OP(L':', LSHIFT(Key_Semicolon)) \ + OP(L'<', RALT(Key_Comma)) \ + OP(L'=', Key_Equals) \ + OP(L'>', RALT(Key_Period)) \ + OP(L'@', RALT(Key_2)) \ + OP(L'[', Key_RightBracket) \ + OP(L'\', Key_NonUsPound) \ + OP(L']', Key_LeftBracket) \ + OP(L'_', LSHIFT(Key_Minus)) \ + OP(L'{', LSHIFT(Key_RightBracket)) \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_LeftBracket)) \ + OP(L'~', Key_Backtick) \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'؀', RALT(Key_N)) \ + OP(L'؁', RALT(Key_Y)) \ + OP(L'؂', RALT(Key_W)) \ + OP(L'؃', RALT(Key_C)) \ + OP(L'،', Key_Comma) \ + OP(L'؎', RALT(Key_X)) \ + OP(L'؏', RALT(Key_Z)) \ + OP(L'ؐ', RALT(Key_S)) \ + OP(L'ؑ', RALT(Key_I)) \ + OP(L'ؒ', RALT(Key_H)) \ + OP(L'ؓ', RALT(Key_R)) \ + OP(L'ؔ', RALT(Key_T)) \ + OP(L'؛', Key_Semicolon) \ + OP(L'؟', LSHIFT(Key_Slash)) \ + OP(L'ء', Key_U) \ + OP(L'آ', LSHIFT(Key_A)) \ + OP(L'ئ', LSHIFT(Key_U)) \ + OP(L'ا', Key_A) \ + OP(L'ب', Key_B) \ + OP(L'ت', Key_T) \ + OP(L'ث', LSHIFT(Key_C)) \ + OP(L'ج', Key_J) \ + OP(L'ح', Key_H) \ + OP(L'خ', LSHIFT(Key_K)) \ + OP(L'د', Key_D) \ + OP(L'ذ', LSHIFT(Key_Z)) \ + OP(L'ر', Key_R) \ + OP(L'ز', Key_Z) \ + OP(L'س', Key_S) \ + OP(L'ش', Key_X) \ + OP(L'ص', LSHIFT(Key_S)) \ + OP(L'ض', LSHIFT(Key_J)) \ + OP(L'ط', Key_V) \ + OP(L'ظ', LSHIFT(Key_V)) \ + OP(L'ع', Key_E) \ + OP(L'غ', LSHIFT(Key_G)) \ + OP(L'ف', Key_F) \ + OP(L'ق', Key_Q) \ + OP(L'ل', Key_L) \ + OP(L'م', Key_M) \ + OP(L'ن', Key_N) \ + OP(L'و', Key_W) \ + OP(L'ً', LSHIFT(Key_Backtick)) \ + OP(L'َ', LSHIFT(Key_Y)) \ + OP(L'ُ', LSHIFT(Key_P)) \ + OP(L'ِ', LSHIFT(Key_I)) \ + OP(L'ّ', LSHIFT(Key_W)) \ + OP(L'ْ', LSHIFT(Key_Q)) \ + OP(L'ٔ', RALT(Key_U)) /* U+0654, XKB_KEY_Arabic_hamza_above, ARABIC HAMZA ABOVE */ \ + OP(L'ٖ', RALT(Key_E)) \ + OP(L'ٗ', RALT(Key_P)) \ + OP(L'٘', LSHIFT(Key_M)) \ + OP(L'٪', RALT(Key_5)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', LSHIFT(Key_Period)) \ + OP(L'ٰ', LSHIFT(Key_E)) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٹ', LSHIFT(Key_T)) /* U+0679, XKB_KEY_Arabic_tteh, ARABIC LETTER TTEH */ \ + OP(L'پ', Key_P) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', Key_C) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ڈ', LSHIFT(Key_D)) /* U+0688, XKB_KEY_Arabic_ddal, ARABIC LETTER DDAL */ \ + OP(L'ڑ', LSHIFT(Key_R)) /* U+0691, XKB_KEY_Arabic_rreh, ARABIC LETTER RREH */ \ + OP(L'ژ', LSHIFT(Key_X)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ک', Key_K) /* U+06a9, XKB_KEY_Arabic_keheh, ARABIC LETTER KEHEH */ \ + OP(L'گ', Key_G) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'ں', LSHIFT(Key_N)) /* U+06ba, XKB_KEY_Arabic_noon_ghunna, ARABIC LETTER NOON GHUNNA */ \ + OP(L'ھ', LSHIFT(Key_H)) /* U+06be, XKB_KEY_Arabic_heh_doachashmee, ARABIC LETTER HEH DOACHASHMEE */ \ + OP(L'ہ', Key_O) /* U+06c1, XKB_KEY_Arabic_heh_goal, ARABIC LETTER HEH GOAL */ \ + OP(L'ۃ', LSHIFT(Key_O)) \ + OP(L'ی', Key_I) /* U+06cc, XKB_KEY_Farsi_yeh, ARABIC LETTER FARSI YEH */ \ + OP(L'ے', Key_Y) /* U+06d2, XKB_KEY_Arabic_yeh_baree, ARABIC LETTER YEH BARREE */ \ + OP(L'۔', Key_Period) /* U+06d4, XKB_KEY_Arabic_fullstop, ARABIC FULL STOP */ \ + OP(L'۰', Key_0) /* U+06f0, XKB_KEY_Farsi_0, EXTENDED ARABIC-INDIC DIGIT ZERO */ \ + OP(L'۱', Key_1) /* U+06f1, XKB_KEY_Farsi_1, EXTENDED ARABIC-INDIC DIGIT ONE */ \ + OP(L'۲', Key_2) /* U+06f2, XKB_KEY_Farsi_2, EXTENDED ARABIC-INDIC DIGIT TWO */ \ + OP(L'۳', Key_3) /* U+06f3, XKB_KEY_Farsi_3, EXTENDED ARABIC-INDIC DIGIT THREE */ \ + OP(L'۴', Key_4) /* U+06f4, XKB_KEY_Farsi_4, EXTENDED ARABIC-INDIC DIGIT FOUR */ \ + OP(L'۵', Key_5) /* U+06f5, XKB_KEY_Farsi_5, EXTENDED ARABIC-INDIC DIGIT FIVE */ \ + OP(L'۶', Key_6) /* U+06f6, XKB_KEY_Farsi_6, EXTENDED ARABIC-INDIC DIGIT SIX */ \ + OP(L'۷', Key_7) /* U+06f7, XKB_KEY_Farsi_7, EXTENDED ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'۸', Key_8) /* U+06f8, XKB_KEY_Farsi_8, EXTENDED ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'۹', Key_9) /* U+06f9, XKB_KEY_Farsi_9, EXTENDED ARABIC-INDIC DIGIT NINE */ \ + OP(L'ﷲ', RALT(Key_A)) \ + OP(L'ﷺ', RALT(Key_D)) \ + OP(L'ﷻ', RALT(Key_J)) \ + OP(L'﷽', RALT(Key_B)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_ddal, LSHIFT(Key_D)) \ + OP(XKB_KEY_Arabic_fullstop, Key_Period) \ + OP(XKB_KEY_Arabic_gaf, Key_G) \ + OP(XKB_KEY_Arabic_hamza_above, RALT(Key_U)) \ + OP(XKB_KEY_Arabic_heh_doachashmee, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_heh_goal, Key_O) \ + OP(XKB_KEY_Arabic_jeh, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_keheh, Key_K) \ + OP(XKB_KEY_Arabic_noon_ghunna, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_peh, Key_P) \ + OP(XKB_KEY_Arabic_percent, RALT(Key_5)) \ + OP(XKB_KEY_Arabic_rreh, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_superscript_alef, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_tcheh, Key_C) \ + OP(XKB_KEY_Arabic_tteh, LSHIFT(Key_T)) \ + OP(XKB_KEY_Arabic_yeh_baree, Key_Y) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Farsi_0, Key_0) \ + OP(XKB_KEY_Farsi_1, Key_1) \ + OP(XKB_KEY_Farsi_2, Key_2) \ + OP(XKB_KEY_Farsi_3, Key_3) \ + OP(XKB_KEY_Farsi_4, Key_4) \ + OP(XKB_KEY_Farsi_5, Key_5) \ + OP(XKB_KEY_Farsi_6, Key_6) \ + OP(XKB_KEY_Farsi_7, Key_7) \ + OP(XKB_KEY_Farsi_8, Key_8) \ + OP(XKB_KEY_Farsi_9, Key_9) \ + OP(XKB_KEY_Farsi_yeh, Key_I) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pk { +namespace urd_crulp { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace urd_crulp +} // namespace pk +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pk/urd-nla/keymap.h b/src/kaleidoscope/host_keymap/linux/pk/urd-nla/keymap.h new file mode 100644 index 0000000000..9d2d073d32 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pk/urd-nla/keymap.h @@ -0,0 +1,312 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pk +// variant: urd-nla + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) \ + OP('"', LSHIFT(Key_Quote)) \ + OP('#', LSHIFT(Key_3)) \ + OP('$', LSHIFT(Key_4)) \ + OP(''', Key_Quote) \ + OP('(', LSHIFT(Key_0)) \ + OP(')', LSHIFT(Key_9)) \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_Minus) \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_Slash) \ + OP('0', Key_0) \ + OP('1', Key_1) \ + OP('2', Key_2) \ + OP('3', Key_3) \ + OP('4', Key_4) \ + OP('5', Key_5) \ + OP('6', Key_6) \ + OP('7', Key_7) \ + OP('8', Key_8) \ + OP('9', Key_9) \ + OP(':', LSHIFT(Key_Semicolon)) \ + OP('<', LSHIFT(Key_Period)) \ + OP('=', Key_Equals) \ + OP('>', LSHIFT(Key_Comma)) \ + OP('@', LSHIFT(Key_2)) \ + OP('[', Key_RightBracket) \ + OP('\', Key_NonUsPound) \ + OP(']', Key_LeftBracket) \ + OP('^', LSHIFT(Key_6)) \ + OP('_', LSHIFT(Key_Minus)) \ + OP('`', Key_Backtick) \ + OP('{', LSHIFT(Key_RightBracket)) \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_LeftBracket)) \ + OP('~', LSHIFT(Key_Backtick)) \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) \ + OP(L'"', LSHIFT(Key_Quote)) \ + OP(L'#', LSHIFT(Key_3)) \ + OP(L'$', LSHIFT(Key_4)) \ + OP(L''', Key_Quote) \ + OP(L'(', LSHIFT(Key_0)) \ + OP(L')', LSHIFT(Key_9)) \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_Minus) \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_Slash) \ + OP(L'0', Key_0) \ + OP(L'1', Key_1) \ + OP(L'2', Key_2) \ + OP(L'3', Key_3) \ + OP(L'4', Key_4) \ + OP(L'5', Key_5) \ + OP(L'6', Key_6) \ + OP(L'7', Key_7) \ + OP(L'8', Key_8) \ + OP(L'9', Key_9) \ + OP(L':', LSHIFT(Key_Semicolon)) \ + OP(L'<', LSHIFT(Key_Period)) \ + OP(L'=', Key_Equals) \ + OP(L'>', LSHIFT(Key_Comma)) \ + OP(L'@', LSHIFT(Key_2)) \ + OP(L'[', Key_RightBracket) \ + OP(L'\', Key_NonUsPound) \ + OP(L']', Key_LeftBracket) \ + OP(L'^', LSHIFT(Key_6)) \ + OP(L'_', LSHIFT(Key_Minus)) \ + OP(L'`', Key_Backtick) \ + OP(L'{', LSHIFT(Key_RightBracket)) \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_LeftBracket)) \ + OP(L'~', LSHIFT(Key_Backtick)) \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'،', Key_Comma) \ + OP(L'؛', Key_Semicolon) \ + OP(L'؟', LSHIFT(Key_Slash)) \ + OP(L'ء', LSHIFT(Key_H)) \ + OP(L'آ', LSHIFT(Key_J)) \ + OP(L'ؤ', LSHIFT(Key_B)) \ + OP(L'ئ', LSHIFT(Key_N)) \ + OP(L'ا', Key_J) \ + OP(L'ب', Key_I) \ + OP(L'ت', Key_U) \ + OP(L'ث', LSHIFT(Key_T)) \ + OP(L'ج', Key_O) \ + OP(L'ح', Key_P) \ + OP(L'خ', LSHIFT(Key_P)) \ + OP(L'د', Key_R) \ + OP(L'ذ', LSHIFT(Key_E)) \ + OP(L'ر', Key_D) \ + OP(L'ز', LSHIFT(Key_S)) \ + OP(L'س', Key_V) \ + OP(L'ش', Key_B) \ + OP(L'ص', Key_W) \ + OP(L'ض', LSHIFT(Key_W)) \ + OP(L'ط', Key_Q) \ + OP(L'ظ', LSHIFT(Key_Q)) \ + OP(L'ع', Key_M) \ + OP(L'غ', Key_N) \ + OP(L'ـ', LSHIFT(Key_I)) \ + OP(L'ف', Key_X) \ + OP(L'ق', Key_Z) \ + OP(L'ل', Key_G) \ + OP(L'م', Key_A) \ + OP(L'ن', Key_F) \ + OP(L'و', Key_S) \ + OP(L'ي', LSHIFT(Key_L)) \ + OP(L'ّ', LSHIFT(Key_Y)) \ + OP(L'٪', LSHIFT(Key_5)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٭', LSHIFT(Key_8)) \ + OP(L'ٹ', Key_T) /* U+0679, XKB_KEY_Arabic_tteh, ARABIC LETTER TTEH */ \ + OP(L'پ', Key_Y) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', LSHIFT(Key_O)) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ڈ', LSHIFT(Key_R)) /* U+0688, XKB_KEY_Arabic_ddal, ARABIC LETTER DDAL */ \ + OP(L'ڑ', LSHIFT(Key_D)) /* U+0691, XKB_KEY_Arabic_rreh, ARABIC LETTER RREH */ \ + OP(L'ژ', LSHIFT(Key_A)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ک', Key_K) /* U+06a9, XKB_KEY_Arabic_keheh, ARABIC LETTER KEHEH */ \ + OP(L'گ', LSHIFT(Key_K)) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'ں', LSHIFT(Key_F)) /* U+06ba, XKB_KEY_Arabic_noon_ghunna, ARABIC LETTER NOON GHUNNA */ \ + OP(L'ھ', Key_E) /* U+06be, XKB_KEY_Arabic_heh_doachashmee, ARABIC LETTER HEH DOACHASHMEE */ \ + OP(L'ہ', Key_H) /* U+06c1, XKB_KEY_Arabic_heh_goal, ARABIC LETTER HEH GOAL */ \ + OP(L'ۂ', LSHIFT(Key_G)) \ + OP(L'ۃ', LSHIFT(Key_U)) \ + OP(L'ی', Key_L) /* U+06cc, XKB_KEY_Farsi_yeh, ARABIC LETTER FARSI YEH */ \ + OP(L'ے', Key_C) /* U+06d2, XKB_KEY_Arabic_yeh_baree, ARABIC LETTER YEH BARREE */ \ + OP(L'ۓ', LSHIFT(Key_C)) \ + OP(L'۔', Key_Period) /* U+06d4, XKB_KEY_Arabic_fullstop, ARABIC FULL STOP */ \ + OP(L'ۖ', LSHIFT(Key_7)) \ + OP(L'‌', RALT(Key_W)) \ + OP(L'‍', RALT(Key_Q)) \ + OP(L'‎', RALT(Key_Z)) \ + OP(L'‏', RALT(Key_M)) \ + OP(L'‪', RALT(Key_X)) \ + OP(L'‫', RALT(Key_N)) \ + OP(L'‬', RALT(Key_V)) \ + OP(L'‭', RALT(Key_C)) \ + OP(L'‮', RALT(Key_B)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_ddal, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_fullstop, Key_Period) \ + OP(XKB_KEY_Arabic_gaf, LSHIFT(Key_K)) \ + OP(XKB_KEY_Arabic_heh_doachashmee, Key_E) \ + OP(XKB_KEY_Arabic_heh_goal, Key_H) \ + OP(XKB_KEY_Arabic_jeh, LSHIFT(Key_A)) \ + OP(XKB_KEY_Arabic_keheh, Key_K) \ + OP(XKB_KEY_Arabic_noon_ghunna, LSHIFT(Key_F)) \ + OP(XKB_KEY_Arabic_peh, Key_Y) \ + OP(XKB_KEY_Arabic_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_Arabic_rreh, LSHIFT(Key_D)) \ + OP(XKB_KEY_Arabic_tcheh, LSHIFT(Key_O)) \ + OP(XKB_KEY_Arabic_tteh, Key_T) \ + OP(XKB_KEY_Arabic_yeh_baree, Key_C) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Farsi_yeh, Key_L) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pk { +namespace urd_nla { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace urd_nla +} // namespace pk +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pl/colemak/keymap.h b/src/kaleidoscope/host_keymap/linux/pl/colemak/keymap.h new file mode 100644 index 0000000000..9dbf9c671a --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pl/colemak/keymap.h @@ -0,0 +1,587 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pl +// variant: colemak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_G)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_E)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_T)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_L)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_Y)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_Semicolon)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_S)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_D)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_O)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_G) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_E) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_T) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_L) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_Y) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_Semicolon) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_S) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_D) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_O) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_G)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_E)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_T)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_L)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_Y)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_Semicolon)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_S)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_D)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_O)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_G) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_E) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_T) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_L) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_Y) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_Semicolon) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_S) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_D) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_O) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_4)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_4))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_5))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'ª', RALT(Key_3)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_LeftBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(Key_2)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_Slash)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ã', RALT(LSHIFT(Key_E))) /* U+00c3, XKB_KEY_Atilde, LATIN CAPITAL LETTER A WITH TILDE */ \ + OP(L'Ä', RALT(LSHIFT(Key_Q))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', RALT(LSHIFT(Key_W))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Í', RALT(LSHIFT(Key_L))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_7))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', RALT(LSHIFT(Key_Semicolon))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Õ', RALT(LSHIFT(Key_Quote))) /* U+00d5, XKB_KEY_Otilde, LATIN CAPITAL LETTER O WITH TILDE */ \ + OP(L'Ö', RALT(LSHIFT(Key_P))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Equals)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_R))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', RALT(LSHIFT(Key_I))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', RALT(LSHIFT(Key_O))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_8))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ã', RALT(Key_E)) /* U+00e3, XKB_KEY_atilde, LATIN SMALL LETTER A WITH TILDE */ \ + OP(L'ä', RALT(Key_Q)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', RALT(Key_W)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'í', RALT(Key_L)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ð', RALT(Key_7)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ó', RALT(Key_Semicolon)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'õ', RALT(Key_Quote)) /* U+00f5, XKB_KEY_otilde, LATIN SMALL LETTER O WITH TILDE */ \ + OP(L'ö', RALT(Key_P)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Equals))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_R)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ú', RALT(Key_I)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', RALT(Key_O)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_8)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ą', RALT(LSHIFT(Key_A))) /* U+0104, XKB_KEY_Aogonek, LATIN CAPITAL LETTER A WITH OGONEK */ \ + OP(L'ą', RALT(Key_A)) /* U+0105, XKB_KEY_aogonek, LATIN SMALL LETTER A WITH OGONEK */ \ + OP(L'Ć', RALT(LSHIFT(Key_C))) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', RALT(Key_C)) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Đ', RALT(LSHIFT(Key_Y))) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_Y)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ę', RALT(LSHIFT(Key_K))) /* U+0118, XKB_KEY_Eogonek, LATIN CAPITAL LETTER E WITH OGONEK */ \ + OP(L'ę', RALT(Key_K)) /* U+0119, XKB_KEY_eogonek, LATIN SMALL LETTER E WITH OGONEK */ \ + OP(L'Ħ', RALT(LSHIFT(Key_6))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_6)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Ł', RALT(LSHIFT(Key_U))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_U)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ń', RALT(LSHIFT(Key_J))) /* U+0143, XKB_KEY_Nacute, LATIN CAPITAL LETTER N WITH ACUTE */ \ + OP(L'ń', RALT(Key_J)) /* U+0144, XKB_KEY_nacute, LATIN SMALL LETTER N WITH ACUTE */ \ + OP(L'Œ', RALT(LSHIFT(Key_V))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_V)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ś', RALT(LSHIFT(Key_D))) /* U+015a, XKB_KEY_Sacute, LATIN CAPITAL LETTER S WITH ACUTE */ \ + OP(L'ś', RALT(Key_D)) /* U+015b, XKB_KEY_sacute, LATIN SMALL LETTER S WITH ACUTE */ \ + OP(L'Ź', RALT(LSHIFT(Key_X))) /* U+0179, XKB_KEY_Zacute, LATIN CAPITAL LETTER Z WITH ACUTE */ \ + OP(L'ź', RALT(Key_X)) /* U+017a, XKB_KEY_zacute, LATIN SMALL LETTER Z WITH ACUTE */ \ + OP(L'Ż', RALT(LSHIFT(Key_Z))) /* U+017b, XKB_KEY_Zabovedot, LATIN CAPITAL LETTER Z WITH DOT ABOVE */ \ + OP(L'ż', RALT(Key_Z)) /* U+017c, XKB_KEY_zabovedot, LATIN SMALL LETTER Z WITH DOT ABOVE */ \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Minus))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_9)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_0)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_9))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_0))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'‹', RALT(LSHIFT(Key_LeftBracket))) \ + OP(L'›', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aogonek, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_Atilde, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_G)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_E, LSHIFT(Key_K)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_7))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Eogonek, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_E)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_T)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_I, LSHIFT(Key_L)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_Y)) \ + OP(XKB_KEY_K, LSHIFT(Key_N)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_U)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_J)) \ + OP(XKB_KEY_Nacute, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Otilde, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_S)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_D)) \ + OP(XKB_KEY_Sacute, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_F)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_8))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_I)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_O)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zabovedot, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Zacute, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, RALT(Key_Q)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_aogonek, RALT(Key_A)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_W)) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_atilde, RALT(Key_E)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(Key_4)) \ + OP(XKB_KEY_colon, LSHIFT(Key_P)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_G) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Period)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_N)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_F)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_B)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_H)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Comma)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_G)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_F))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_S)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(Key_M)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_T)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Backtick)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_dstroke, RALT(Key_Y)) \ + OP(XKB_KEY_e, Key_K) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_eogonek, RALT(Key_K)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_7)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_E) \ + OP(XKB_KEY_g, Key_T) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_6)) \ + OP(XKB_KEY_i, Key_L) \ + OP(XKB_KEY_iacute, RALT(Key_L)) \ + OP(XKB_KEY_j, Key_Y) \ + OP(XKB_KEY_k, Key_N) \ + OP(XKB_KEY_l, Key_U) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_9)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_U)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(Key_2)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(Key_Equals)) \ + OP(XKB_KEY_n, Key_J) \ + OP(XKB_KEY_nacute, RALT(Key_J)) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Spacebar))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_Semicolon) \ + OP(XKB_KEY_oacute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_P)) \ + OP(XKB_KEY_oe, RALT(Key_V)) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_3)) \ + OP(XKB_KEY_oslash, RALT(Key_R)) \ + OP(XKB_KEY_otilde, RALT(Key_Quote)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_S) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_0)) \ + OP(XKB_KEY_s, Key_D) \ + OP(XKB_KEY_sacute, RALT(Key_D)) \ + OP(XKB_KEY_semicolon, Key_P) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_t, Key_F) \ + OP(XKB_KEY_thorn, RALT(Key_8)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_I) \ + OP(XKB_KEY_uacute, RALT(Key_I)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_O)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_O) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zabovedot, RALT(Key_Z)) \ + OP(XKB_KEY_zacute, RALT(Key_X)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pl { +namespace colemak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace colemak +} // namespace pl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pl/csb/keymap.h b/src/kaleidoscope/host_keymap/linux/pl/csb/keymap.h new file mode 100644 index 0000000000..f32b814a32 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pl/csb/keymap.h @@ -0,0 +1,586 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pl +// variant: csb + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ã', RALT(LSHIFT(Key_S))) /* U+00c3, XKB_KEY_Atilde, LATIN CAPITAL LETTER A WITH TILDE */ \ + OP(L'É', RALT(LSHIFT(Key_E))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ë', RALT(LSHIFT(Key_R))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ò', RALT(LSHIFT(Key_I))) /* U+00d2, XKB_KEY_Ograve, LATIN CAPITAL LETTER O WITH GRAVE */ \ + OP(L'Ó', RALT(LSHIFT(Key_O))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ô', RALT(LSHIFT(Key_P))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ù', RALT(LSHIFT(Key_U))) /* U+00d9, XKB_KEY_Ugrave, LATIN CAPITAL LETTER U WITH GRAVE */ \ + OP(L'ã', RALT(Key_S)) /* U+00e3, XKB_KEY_atilde, LATIN SMALL LETTER A WITH TILDE */ \ + OP(L'é', RALT(Key_E)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ë', RALT(Key_R)) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ò', RALT(Key_I)) /* U+00f2, XKB_KEY_ograve, LATIN SMALL LETTER O WITH GRAVE */ \ + OP(L'ó', RALT(Key_O)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ô', RALT(Key_P)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ù', RALT(Key_U)) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'Ą', RALT(LSHIFT(Key_A))) /* U+0104, XKB_KEY_Aogonek, LATIN CAPITAL LETTER A WITH OGONEK */ \ + OP(L'ą', RALT(Key_A)) /* U+0105, XKB_KEY_aogonek, LATIN SMALL LETTER A WITH OGONEK */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ń', RALT(LSHIFT(Key_N))) /* U+0143, XKB_KEY_Nacute, LATIN CAPITAL LETTER N WITH ACUTE */ \ + OP(L'ń', RALT(Key_N)) /* U+0144, XKB_KEY_nacute, LATIN SMALL LETTER N WITH ACUTE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ż', RALT(LSHIFT(Key_Z))) /* U+017b, XKB_KEY_Zabovedot, LATIN CAPITAL LETTER Z WITH DOT ABOVE */ \ + OP(L'ż', RALT(Key_Z)) /* U+017c, XKB_KEY_zabovedot, LATIN SMALL LETTER Z WITH DOT ABOVE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_Y)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aogonek, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Atilde, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_Y)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Nacute, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Ograve, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ugrave, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zabovedot, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_aogonek, RALT(Key_A)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_atilde, RALT(Key_S)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, RALT(Key_E)) \ + OP(XKB_KEY_ediaeresis, RALT(Key_R)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nacute, RALT(Key_N)) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, RALT(Key_O)) \ + OP(XKB_KEY_ocircumflex, RALT(Key_P)) \ + OP(XKB_KEY_ograve, RALT(Key_I)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zabovedot, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pl { +namespace csb { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace csb +} // namespace pl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pl/dvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/pl/dvorak/keymap.h new file mode 100644 index 0000000000..9ede2f6efd --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pl/dvorak/keymap.h @@ -0,0 +1,488 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pl +// variant: dvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'·', RALT(LSHIFT(Key_E))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'Ó', RALT(LSHIFT(Key_S))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'ó', RALT(Key_S)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'Ą', RALT(LSHIFT(Key_A))) /* U+0104, XKB_KEY_Aogonek, LATIN CAPITAL LETTER A WITH OGONEK */ \ + OP(L'ą', RALT(Key_A)) /* U+0105, XKB_KEY_aogonek, LATIN SMALL LETTER A WITH OGONEK */ \ + OP(L'Ć', RALT(LSHIFT(Key_I))) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', RALT(Key_I)) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Ę', RALT(LSHIFT(Key_D))) /* U+0118, XKB_KEY_Eogonek, LATIN CAPITAL LETTER E WITH OGONEK */ \ + OP(L'ę', RALT(Key_D)) /* U+0119, XKB_KEY_eogonek, LATIN SMALL LETTER E WITH OGONEK */ \ + OP(L'Ł', RALT(LSHIFT(Key_P))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_P)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ń', RALT(LSHIFT(Key_L))) /* U+0143, XKB_KEY_Nacute, LATIN CAPITAL LETTER N WITH ACUTE */ \ + OP(L'ń', RALT(Key_L)) /* U+0144, XKB_KEY_nacute, LATIN SMALL LETTER N WITH ACUTE */ \ + OP(L'Ś', RALT(LSHIFT(Key_Semicolon))) /* U+015a, XKB_KEY_Sacute, LATIN CAPITAL LETTER S WITH ACUTE */ \ + OP(L'ś', RALT(Key_Semicolon)) /* U+015b, XKB_KEY_sacute, LATIN SMALL LETTER S WITH ACUTE */ \ + OP(L'Ź', RALT(LSHIFT(Key_Period))) /* U+0179, XKB_KEY_Zacute, LATIN CAPITAL LETTER Z WITH ACUTE */ \ + OP(L'ź', RALT(Key_Period)) /* U+017a, XKB_KEY_zacute, LATIN SMALL LETTER Z WITH ACUTE */ \ + OP(L'Ż', RALT(LSHIFT(Key_Slash))) /* U+017b, XKB_KEY_Zabovedot, LATIN CAPITAL LETTER Z WITH DOT ABOVE */ \ + OP(L'ż', RALT(Key_Slash)) /* U+017c, XKB_KEY_zabovedot, LATIN SMALL LETTER Z WITH DOT ABOVE */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aogonek, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cacute, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Eogonek, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Nacute, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Sacute, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Zabovedot, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_Zacute, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_aogonek, RALT(Key_A)) \ + OP(XKB_KEY_apostrophe, Key_Q) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, Key_Minus) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_cacute, RALT(Key_I)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Z)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_E)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Q)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_W))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_W)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Q))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Z))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_9)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_Z)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_eogonek, RALT(Key_D)) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_P)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_nacute, RALT(Key_L)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_oacute, RALT(Key_S)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_plus, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Q)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_sacute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_semicolon, Key_Z) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_z, Key_Slash) \ + OP(XKB_KEY_zabovedot, RALT(Key_Slash)) \ + OP(XKB_KEY_zacute, RALT(Key_Period)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pl { +namespace dvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak +} // namespace pl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pl/dvorak_altquotes/keymap.h b/src/kaleidoscope/host_keymap/linux/pl/dvorak_altquotes/keymap.h new file mode 100644 index 0000000000..99fbdbf4ce --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pl/dvorak_altquotes/keymap.h @@ -0,0 +1,492 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pl +// variant: dvorak_altquotes + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'·', RALT(LSHIFT(Key_E))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'Ó', RALT(LSHIFT(Key_S))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'ó', RALT(Key_S)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'Ą', RALT(LSHIFT(Key_A))) /* U+0104, XKB_KEY_Aogonek, LATIN CAPITAL LETTER A WITH OGONEK */ \ + OP(L'ą', RALT(Key_A)) /* U+0105, XKB_KEY_aogonek, LATIN SMALL LETTER A WITH OGONEK */ \ + OP(L'Ć', RALT(LSHIFT(Key_I))) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', RALT(Key_I)) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Ę', RALT(LSHIFT(Key_D))) /* U+0118, XKB_KEY_Eogonek, LATIN CAPITAL LETTER E WITH OGONEK */ \ + OP(L'ę', RALT(Key_D)) /* U+0119, XKB_KEY_eogonek, LATIN SMALL LETTER E WITH OGONEK */ \ + OP(L'Ł', RALT(LSHIFT(Key_P))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_P)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ń', RALT(LSHIFT(Key_L))) /* U+0143, XKB_KEY_Nacute, LATIN CAPITAL LETTER N WITH ACUTE */ \ + OP(L'ń', RALT(Key_L)) /* U+0144, XKB_KEY_nacute, LATIN SMALL LETTER N WITH ACUTE */ \ + OP(L'Ś', RALT(LSHIFT(Key_Semicolon))) /* U+015a, XKB_KEY_Sacute, LATIN CAPITAL LETTER S WITH ACUTE */ \ + OP(L'ś', RALT(Key_Semicolon)) /* U+015b, XKB_KEY_sacute, LATIN SMALL LETTER S WITH ACUTE */ \ + OP(L'Ź', RALT(LSHIFT(Key_Period))) /* U+0179, XKB_KEY_Zacute, LATIN CAPITAL LETTER Z WITH ACUTE */ \ + OP(L'ź', RALT(Key_Period)) /* U+017a, XKB_KEY_zacute, LATIN SMALL LETTER Z WITH ACUTE */ \ + OP(L'Ż', RALT(LSHIFT(Key_Slash))) /* U+017b, XKB_KEY_Zabovedot, LATIN CAPITAL LETTER Z WITH DOT ABOVE */ \ + OP(L'ż', RALT(Key_Slash)) /* U+017c, XKB_KEY_zabovedot, LATIN SMALL LETTER Z WITH DOT ABOVE */ \ + OP(L'”', RALT(LSHIFT(Key_1))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_1)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aogonek, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cacute, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Eogonek, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Nacute, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Sacute, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Zabovedot, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_Zacute, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_aogonek, RALT(Key_A)) \ + OP(XKB_KEY_apostrophe, Key_Q) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, Key_Minus) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_cacute, RALT(Key_I)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Z)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_E)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Q)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_W))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_W)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Q))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Z))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_9)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_Z)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_1)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_eogonek, RALT(Key_D)) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_P)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_nacute, RALT(Key_L)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_oacute, RALT(Key_S)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_plus, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Q)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_sacute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_semicolon, Key_Z) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_z, Key_Slash) \ + OP(XKB_KEY_zabovedot, RALT(Key_Slash)) \ + OP(XKB_KEY_zacute, RALT(Key_Period)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pl { +namespace dvorak_altquotes { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak_altquotes +} // namespace pl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pl/dvorak_quotes/keymap.h b/src/kaleidoscope/host_keymap/linux/pl/dvorak_quotes/keymap.h new file mode 100644 index 0000000000..84ae1c561a --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pl/dvorak_quotes/keymap.h @@ -0,0 +1,492 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pl +// variant: dvorak_quotes + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'·', RALT(LSHIFT(Key_E))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'Ó', RALT(LSHIFT(Key_S))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'ó', RALT(Key_S)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'Ą', RALT(LSHIFT(Key_A))) /* U+0104, XKB_KEY_Aogonek, LATIN CAPITAL LETTER A WITH OGONEK */ \ + OP(L'ą', RALT(Key_A)) /* U+0105, XKB_KEY_aogonek, LATIN SMALL LETTER A WITH OGONEK */ \ + OP(L'Ć', RALT(LSHIFT(Key_I))) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', RALT(Key_I)) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Ę', RALT(LSHIFT(Key_D))) /* U+0118, XKB_KEY_Eogonek, LATIN CAPITAL LETTER E WITH OGONEK */ \ + OP(L'ę', RALT(Key_D)) /* U+0119, XKB_KEY_eogonek, LATIN SMALL LETTER E WITH OGONEK */ \ + OP(L'Ł', RALT(LSHIFT(Key_P))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_P)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ń', RALT(LSHIFT(Key_L))) /* U+0143, XKB_KEY_Nacute, LATIN CAPITAL LETTER N WITH ACUTE */ \ + OP(L'ń', RALT(Key_L)) /* U+0144, XKB_KEY_nacute, LATIN SMALL LETTER N WITH ACUTE */ \ + OP(L'Ś', RALT(LSHIFT(Key_Semicolon))) /* U+015a, XKB_KEY_Sacute, LATIN CAPITAL LETTER S WITH ACUTE */ \ + OP(L'ś', RALT(Key_Semicolon)) /* U+015b, XKB_KEY_sacute, LATIN SMALL LETTER S WITH ACUTE */ \ + OP(L'Ź', RALT(LSHIFT(Key_Period))) /* U+0179, XKB_KEY_Zacute, LATIN CAPITAL LETTER Z WITH ACUTE */ \ + OP(L'ź', RALT(Key_Period)) /* U+017a, XKB_KEY_zacute, LATIN SMALL LETTER Z WITH ACUTE */ \ + OP(L'Ż', RALT(LSHIFT(Key_Slash))) /* U+017b, XKB_KEY_Zabovedot, LATIN CAPITAL LETTER Z WITH DOT ABOVE */ \ + OP(L'ż', RALT(Key_Slash)) /* U+017c, XKB_KEY_zabovedot, LATIN SMALL LETTER Z WITH DOT ABOVE */ \ + OP(L'”', RALT(LSHIFT(Key_Q))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_Q)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aogonek, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cacute, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Eogonek, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Nacute, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Sacute, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Zabovedot, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_Zacute, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_aogonek, RALT(Key_A)) \ + OP(XKB_KEY_apostrophe, Key_Q) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, Key_Minus) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_cacute, RALT(Key_I)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Z)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_E)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, RALT(Key_1)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_W))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_W)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Z))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_9)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_Z)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_Q)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_eogonek, RALT(Key_D)) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_P)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_nacute, RALT(Key_L)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_oacute, RALT(Key_S)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_plus, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Q)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_sacute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_semicolon, Key_Z) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_z, Key_Slash) \ + OP(XKB_KEY_zabovedot, RALT(Key_Slash)) \ + OP(XKB_KEY_zacute, RALT(Key_Period)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pl { +namespace dvorak_quotes { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak_quotes +} // namespace pl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pl/dvp/keymap.h b/src/kaleidoscope/host_keymap/linux/pl/dvp/keymap.h new file mode 100644 index 0000000000..b3cd25e816 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pl/dvp/keymap.h @@ -0,0 +1,543 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pl +// variant: dvp + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Minus) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Z)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_Equals) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_Backtick) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_1)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Z) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_8) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_7) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_9) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_7)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_5)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_8)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_4)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_9)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_3)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_0)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_2)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_Minus)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_6)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Q) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_6) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_RightBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_2) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_0) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', Key_3) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', Key_4) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Minus) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Z)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_Equals) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_Backtick) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_1)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Z) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_8) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_7) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_9) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_7)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_5)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_8)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_4)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_9)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_3)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_0)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_2)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_Minus)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_6)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Q) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_6) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_RightBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_2) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_0) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', Key_3) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', Key_4) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_Minus)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_3)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_6)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_2)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_4)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_R))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'«', RALT(Key_W)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'­', RALT(Key_Quote)) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'®', RALT(Key_O)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'»', RALT(Key_E)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_8)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(Key_LeftBracket)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'É', RALT(LSHIFT(Key_F))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_H))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', RALT(LSHIFT(Key_S))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ü', RALT(LSHIFT(Key_T))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_K))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'é', RALT(Key_F)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ð', RALT(Key_H)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ó', RALT(Key_S)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ü', RALT(Key_T)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_K)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ą', RALT(LSHIFT(Key_A))) /* U+0104, XKB_KEY_Aogonek, LATIN CAPITAL LETTER A WITH OGONEK */ \ + OP(L'ą', RALT(Key_A)) /* U+0105, XKB_KEY_aogonek, LATIN SMALL LETTER A WITH OGONEK */ \ + OP(L'Ć', RALT(LSHIFT(Key_I))) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', RALT(Key_I)) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Ę', RALT(LSHIFT(Key_D))) /* U+0118, XKB_KEY_Eogonek, LATIN CAPITAL LETTER E WITH OGONEK */ \ + OP(L'ę', RALT(Key_D)) /* U+0119, XKB_KEY_eogonek, LATIN SMALL LETTER E WITH OGONEK */ \ + OP(L'Ł', RALT(LSHIFT(Key_P))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_P)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ń', RALT(LSHIFT(Key_L))) /* U+0143, XKB_KEY_Nacute, LATIN CAPITAL LETTER N WITH ACUTE */ \ + OP(L'ń', RALT(Key_L)) /* U+0144, XKB_KEY_nacute, LATIN SMALL LETTER N WITH ACUTE */ \ + OP(L'Ś', RALT(LSHIFT(Key_Semicolon))) /* U+015a, XKB_KEY_Sacute, LATIN CAPITAL LETTER S WITH ACUTE */ \ + OP(L'ś', RALT(Key_Semicolon)) /* U+015b, XKB_KEY_sacute, LATIN SMALL LETTER S WITH ACUTE */ \ + OP(L'Ź', RALT(LSHIFT(Key_B))) /* U+0179, XKB_KEY_Zacute, LATIN CAPITAL LETTER Z WITH ACUTE */ \ + OP(L'ź', RALT(Key_B)) /* U+017a, XKB_KEY_zacute, LATIN SMALL LETTER Z WITH ACUTE */ \ + OP(L'Ż', RALT(LSHIFT(Key_Slash))) /* U+017b, XKB_KEY_Zabovedot, LATIN CAPITAL LETTER Z WITH DOT ABOVE */ \ + OP(L'ż', RALT(Key_Slash)) /* U+017c, XKB_KEY_zabovedot, LATIN SMALL LETTER Z WITH DOT ABOVE */ \ + OP(L'–', RALT(LSHIFT(Key_Quote))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_N))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_N)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_1)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'‽', RALT(LSHIFT(Key_LeftBracket))) \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_O))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⸘', RALT(LSHIFT(Key_Minus))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_7)) \ + OP(XKB_KEY_1, LSHIFT(Key_5)) \ + OP(XKB_KEY_2, LSHIFT(Key_8)) \ + OP(XKB_KEY_3, LSHIFT(Key_4)) \ + OP(XKB_KEY_4, LSHIFT(Key_9)) \ + OP(XKB_KEY_5, LSHIFT(Key_3)) \ + OP(XKB_KEY_6, LSHIFT(Key_0)) \ + OP(XKB_KEY_7, LSHIFT(Key_2)) \ + OP(XKB_KEY_8, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_9, LSHIFT(Key_6)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aogonek, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cacute, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_H))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Eogonek, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Nacute, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Sacute, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_K))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Zabovedot, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_Zacute, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_aogonek, RALT(Key_A)) \ + OP(XKB_KEY_apostrophe, Key_Z) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, Key_7) \ + OP(XKB_KEY_at, Key_RightBracket) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, Key_3) \ + OP(XKB_KEY_braceright, Key_4) \ + OP(XKB_KEY_bracketleft, Key_2) \ + OP(XKB_KEY_bracketright, Key_0) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_cacute, RALT(Key_I)) \ + OP(XKB_KEY_cent, RALT(Key_3)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Q)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_currency, RALT(Key_2)) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dead_acute, RALT(Key_J)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_RightBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Q)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Z))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_9)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Backtick)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, Key_Backtick) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_1)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_eacute, RALT(Key_F)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_eogonek, RALT(Key_D)) \ + OP(XKB_KEY_equal, Key_6) \ + OP(XKB_KEY_eth, RALT(Key_H)) \ + OP(XKB_KEY_exclam, Key_Minus) \ + OP(XKB_KEY_exclamdown, RALT(Key_Minus)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_W)) \ + OP(XKB_KEY_guillemotright, RALT(Key_E)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_hyphen, RALT(Key_Quote)) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_P)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_nacute, RALT(Key_L)) \ + OP(XKB_KEY_numbersign, Key_Equals) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_oacute, RALT(Key_S)) \ + OP(XKB_KEY_onehalf, RALT(Key_8)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_8) \ + OP(XKB_KEY_percent, LSHIFT(Key_1)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_plus, Key_9) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_questiondown, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Z)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_registered, RALT(Key_O)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_N)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_sacute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_semicolon, Key_Q) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_6)) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_thorn, RALT(Key_K)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_udiaeresis, RALT(Key_T)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_yen, RALT(Key_4)) \ + OP(XKB_KEY_z, Key_Slash) \ + OP(XKB_KEY_zabovedot, RALT(Key_Slash)) \ + OP(XKB_KEY_zacute, RALT(Key_B)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pl { +namespace dvp { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvp +} // namespace pl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pl/glagolica/keymap.h b/src/kaleidoscope/host_keymap/linux/pl/glagolica/keymap.h new file mode 100644 index 0000000000..f2e108beca --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pl/glagolica/keymap.h @@ -0,0 +1,241 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pl +// variant: glagolica + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ⰰ', Key_A) \ + OP(L'Ⰱ', Key_B) \ + OP(L'Ⰲ', Key_W) \ + OP(L'Ⰳ', Key_G) \ + OP(L'Ⰴ', Key_D) \ + OP(L'Ⰵ', Key_E) \ + OP(L'Ⰶ', Key_Quote) \ + OP(L'Ⰷ', LSHIFT(Key_Z)) \ + OP(L'Ⰸ', Key_Z) \ + OP(L'Ⰹ', Key_Y) \ + OP(L'Ⰺ', Key_J) \ + OP(L'Ⰻ', Key_I) \ + OP(L'Ⰼ', Key_NonUsPound) \ + OP(L'Ⰽ', Key_K) \ + OP(L'Ⰾ', Key_L) \ + OP(L'Ⰿ', Key_M) \ + OP(L'Ⱀ', Key_N) \ + OP(L'Ⱁ', Key_O) \ + OP(L'Ⱂ', Key_P) \ + OP(L'Ⱃ', Key_R) \ + OP(L'Ⱄ', Key_S) \ + OP(L'Ⱅ', Key_T) \ + OP(L'Ⱆ', Key_U) \ + OP(L'Ⱇ', Key_F) \ + OP(L'Ⱈ', Key_H) \ + OP(L'Ⱉ', LSHIFT(Key_W)) \ + OP(L'Ⱊ', LSHIFT(Key_P)) \ + OP(L'Ⱋ', Key_RightBracket) \ + OP(L'Ⱌ', Key_C) \ + OP(L'Ⱍ', LSHIFT(Key_C)) \ + OP(L'Ⱎ', Key_LeftBracket) \ + OP(L'Ⱏ', LSHIFT(Key_X)) \ + OP(L'Ⱐ', Key_X) \ + OP(L'Ⱑ', Key_Q) \ + OP(L'Ⱓ', LSHIFT(Key_Q)) \ + OP(L'Ⱔ', RALT(Key_E)) \ + OP(L'Ⱕ', RALT(LSHIFT(Key_E))) \ + OP(L'Ⱖ', LSHIFT(Key_LeftBracket)) \ + OP(L'Ⱗ', LSHIFT(Key_E)) \ + OP(L'Ⱘ', Key_Semicolon) \ + OP(L'Ⱙ', LSHIFT(Key_RightBracket)) \ + OP(L'Ⱚ', LSHIFT(Key_F)) \ + OP(L'Ⱛ', LSHIFT(Key_V)) \ + OP(L'ⱁ', RALT(Key_O)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pl { +namespace glagolica { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace glagolica +} // namespace pl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pl/intl/keymap.h b/src/kaleidoscope/host_keymap/linux/pl/intl/keymap.h new file mode 100644 index 0000000000..458cf66feb --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pl/intl/keymap.h @@ -0,0 +1,539 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pl +// variant: intl + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_6)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_4)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_2)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(LSHIFT(Key_LeftBracket))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', RALT(Key_0)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_NonUsPound))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_Period))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'»', RALT(LSHIFT(Key_RightBracket))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(LSHIFT(Key_Slash))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ó', RALT(LSHIFT(Key_O))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'×', RALT(Key_8)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'ó', RALT(Key_O)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'÷', RALT(Key_9)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ą', RALT(LSHIFT(Key_A))) /* U+0104, XKB_KEY_Aogonek, LATIN CAPITAL LETTER A WITH OGONEK */ \ + OP(L'ą', RALT(Key_A)) /* U+0105, XKB_KEY_aogonek, LATIN SMALL LETTER A WITH OGONEK */ \ + OP(L'Ć', RALT(LSHIFT(Key_C))) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', RALT(Key_C)) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Ę', RALT(LSHIFT(Key_E))) /* U+0118, XKB_KEY_Eogonek, LATIN CAPITAL LETTER E WITH OGONEK */ \ + OP(L'ę', RALT(Key_E)) /* U+0119, XKB_KEY_eogonek, LATIN SMALL LETTER E WITH OGONEK */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ń', RALT(LSHIFT(Key_N))) /* U+0143, XKB_KEY_Nacute, LATIN CAPITAL LETTER N WITH ACUTE */ \ + OP(L'ń', RALT(Key_N)) /* U+0144, XKB_KEY_nacute, LATIN SMALL LETTER N WITH ACUTE */ \ + OP(L'Ś', RALT(LSHIFT(Key_S))) /* U+015a, XKB_KEY_Sacute, LATIN CAPITAL LETTER S WITH ACUTE */ \ + OP(L'ś', RALT(Key_S)) /* U+015b, XKB_KEY_sacute, LATIN SMALL LETTER S WITH ACUTE */ \ + OP(L'Ź', RALT(LSHIFT(Key_X))) /* U+0179, XKB_KEY_Zacute, LATIN CAPITAL LETTER Z WITH ACUTE */ \ + OP(L'ź', RALT(Key_X)) /* U+017a, XKB_KEY_zacute, LATIN SMALL LETTER Z WITH ACUTE */ \ + OP(L'Ż', RALT(LSHIFT(Key_Z))) /* U+017b, XKB_KEY_Zabovedot, LATIN CAPITAL LETTER Z WITH DOT ABOVE */ \ + OP(L'ż', RALT(Key_Z)) /* U+017c, XKB_KEY_zabovedot, LATIN SMALL LETTER Z WITH DOT ABOVE */ \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Equals)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Semicolon)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_Quote)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(Key_Comma)) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_Semicolon))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_Quote))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_Comma))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'•', RALT(Key_3)) \ + OP(L'…', RALT(Key_Period)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‹', RALT(Key_LeftBracket)) \ + OP(L'›', RALT(Key_RightBracket)) \ + OP(L'⁄', RALT(Key_Slash)) \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'−', RALT(Key_7)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aogonek, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Eogonek, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Nacute, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Sacute, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zabovedot, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Zacute, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_aogonek, RALT(Key_A)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(Key_6)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_2)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(LSHIFT(Key_9))) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_5))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_4))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_6))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_2))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_Backtick)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_Minus))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_0)) \ + OP(XKB_KEY_division, RALT(Key_9)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_ellipsis, RALT(Key_Period)) \ + OP(XKB_KEY_emdash, RALT(Key_Equals)) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_eogonek, RALT(Key_E)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Semicolon)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(Key_8)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nacute, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_Quote)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_sacute, RALT(Key_S)) \ + OP(XKB_KEY_section, RALT(Key_4)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_singlelowquotemark, RALT(Key_Comma)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zabovedot, RALT(Key_Z)) \ + OP(XKB_KEY_zacute, RALT(Key_X)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pl { +namespace intl { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace intl +} // namespace pl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pl/legacy/keymap.h b/src/kaleidoscope/host_keymap/linux/pl/legacy/keymap.h new file mode 100644 index 0000000000..9f5f702f59 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pl/legacy/keymap.h @@ -0,0 +1,590 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pl +// variant: legacy + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_U))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', RALT(LSHIFT(Key_O))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ó', RALT(Key_O)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ą', RALT(LSHIFT(Key_A))) /* U+0104, XKB_KEY_Aogonek, LATIN CAPITAL LETTER A WITH OGONEK */ \ + OP(L'ą', RALT(Key_A)) /* U+0105, XKB_KEY_aogonek, LATIN SMALL LETTER A WITH OGONEK */ \ + OP(L'Ć', RALT(LSHIFT(Key_C))) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', RALT(Key_C)) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ę', RALT(LSHIFT(Key_E))) /* U+0118, XKB_KEY_Eogonek, LATIN CAPITAL LETTER E WITH OGONEK */ \ + OP(L'ę', RALT(Key_E)) /* U+0119, XKB_KEY_eogonek, LATIN SMALL LETTER E WITH OGONEK */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ń', RALT(LSHIFT(Key_N))) /* U+0143, XKB_KEY_Nacute, LATIN CAPITAL LETTER N WITH ACUTE */ \ + OP(L'ń', RALT(Key_N)) /* U+0144, XKB_KEY_nacute, LATIN SMALL LETTER N WITH ACUTE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ś', RALT(LSHIFT(Key_S))) /* U+015a, XKB_KEY_Sacute, LATIN CAPITAL LETTER S WITH ACUTE */ \ + OP(L'ś', RALT(Key_S)) /* U+015b, XKB_KEY_sacute, LATIN SMALL LETTER S WITH ACUTE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ź', RALT(LSHIFT(Key_X))) /* U+0179, XKB_KEY_Zacute, LATIN CAPITAL LETTER Z WITH ACUTE */ \ + OP(L'ź', RALT(Key_X)) /* U+017a, XKB_KEY_zacute, LATIN SMALL LETTER Z WITH ACUTE */ \ + OP(L'Ż', RALT(LSHIFT(Key_Z))) /* U+017b, XKB_KEY_Zabovedot, LATIN CAPITAL LETTER Z WITH DOT ABOVE */ \ + OP(L'ż', RALT(Key_Z)) /* U+017c, XKB_KEY_zabovedot, LATIN SMALL LETTER Z WITH DOT ABOVE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_U)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aogonek, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Eogonek, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_U)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Nacute, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Sacute, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zabovedot, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Zacute, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_aogonek, RALT(Key_A)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_eogonek, RALT(Key_E)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nacute, RALT(Key_N)) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_sacute, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zabovedot, RALT(Key_Z)) \ + OP(XKB_KEY_zacute, RALT(Key_X)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pl { +namespace legacy { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace legacy +} // namespace pl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pl/qwertz/keymap.h b/src/kaleidoscope/host_keymap/linux/pl/qwertz/keymap.h new file mode 100644 index 0000000000..5ed4208c72 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pl/qwertz/keymap.h @@ -0,0 +1,566 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pl +// variant: qwertz + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Equals) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(LSHIFT(Key_V))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Equals) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(LSHIFT(Key_V))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_M)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_5)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ó', Key_NonUsPound) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ą', Key_Quote) /* U+0105, XKB_KEY_aogonek, LATIN SMALL LETTER A WITH OGONEK */ \ + OP(L'ć', LSHIFT(Key_RightBracket)) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'ę', LSHIFT(Key_Quote)) /* U+0119, XKB_KEY_eogonek, LATIN SMALL LETTER E WITH OGONEK */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', LSHIFT(Key_Semicolon)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', Key_Semicolon) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'ń', LSHIFT(Key_LeftBracket)) /* U+0144, XKB_KEY_nacute, LATIN SMALL LETTER N WITH ACUTE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ś', Key_RightBracket) /* U+015b, XKB_KEY_sacute, LATIN SMALL LETTER S WITH ACUTE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ź', LSHIFT(Key_NonUsPound)) /* U+017a, XKB_KEY_zacute, LATIN SMALL LETTER Z WITH ACUTE */ \ + OP(L'ż', Key_LeftBracket) /* U+017c, XKB_KEY_zabovedot, LATIN SMALL LETTER Z WITH DOT ABOVE */ \ + OP(L'˙', Key_Backtick) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, Key_Backtick) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_aogonek, Key_Quote) \ + OP(XKB_KEY_apostrophe, Key_Equals) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(Key_1)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, RALT(Key_5)) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eogonek, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(LSHIFT(Key_V))) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, Key_Semicolon) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nacute, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, Key_NonUsPound) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_sacute, Key_RightBracket) \ + OP(XKB_KEY_section, RALT(Key_M)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + OP(XKB_KEY_zabovedot, Key_LeftBracket) \ + OP(XKB_KEY_zacute, LSHIFT(Key_NonUsPound)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pl { +namespace qwertz { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace qwertz +} // namespace pl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pl/ru_phonetic_dvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/pl/ru_phonetic_dvorak/keymap.h new file mode 100644 index 0000000000..0d9c35d78d --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pl/ru_phonetic_dvorak/keymap.h @@ -0,0 +1,428 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pl +// variant: ru_phonetic_dvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'·', RALT(LSHIFT(Key_E))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'Ё', RALT(LSHIFT(Key_S))) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_N)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_Comma)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_H)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_D)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', RALT(LSHIFT(Key_Slash))) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Slash)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_G)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_C)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_V)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_P)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_L)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_S)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_R)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_O)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_Semicolon)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_K)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_F)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_Y)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_J)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_I)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', RALT(LSHIFT(Key_I))) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', RALT(LSHIFT(Key_Semicolon))) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_B)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', RALT(LSHIFT(Key_N))) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_T)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', RALT(LSHIFT(Key_R))) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', RALT(LSHIFT(Key_D))) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', RALT(LSHIFT(Key_F))) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_X)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_N) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_Comma) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_H) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_D) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', RALT(Key_Slash)) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Slash) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_G) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_C) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_V) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_P) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_L) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_S) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_R) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_O) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_Semicolon) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_K) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_F) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_Y) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_J) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_I) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', RALT(Key_I)) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', RALT(Key_Semicolon)) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_B) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', RALT(Key_N)) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_T) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', RALT(Key_R)) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', RALT(Key_D)) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', RALT(Key_F)) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_X) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', RALT(Key_S)) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_CHE, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_E, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_IO, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_SHA, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_YU, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Cyrillic_ZHE, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_N) \ + OP(XKB_KEY_Cyrillic_che, RALT(Key_I)) \ + OP(XKB_KEY_Cyrillic_de, Key_H) \ + OP(XKB_KEY_Cyrillic_e, RALT(Key_D)) \ + OP(XKB_KEY_Cyrillic_ef, Key_Y) \ + OP(XKB_KEY_Cyrillic_el, Key_P) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_L) \ + OP(XKB_KEY_Cyrillic_er, Key_O) \ + OP(XKB_KEY_Cyrillic_es, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_J) \ + OP(XKB_KEY_Cyrillic_hardsign, RALT(Key_N)) \ + OP(XKB_KEY_Cyrillic_i, Key_G) \ + OP(XKB_KEY_Cyrillic_ie, Key_D) \ + OP(XKB_KEY_Cyrillic_io, RALT(Key_S)) \ + OP(XKB_KEY_Cyrillic_ka, Key_V) \ + OP(XKB_KEY_Cyrillic_o, Key_S) \ + OP(XKB_KEY_Cyrillic_pe, Key_R) \ + OP(XKB_KEY_Cyrillic_sha, RALT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_shcha, Key_B) \ + OP(XKB_KEY_Cyrillic_shorti, Key_C) \ + OP(XKB_KEY_Cyrillic_softsign, RALT(Key_R)) \ + OP(XKB_KEY_Cyrillic_te, Key_K) \ + OP(XKB_KEY_Cyrillic_tse, Key_I) \ + OP(XKB_KEY_Cyrillic_u, Key_F) \ + OP(XKB_KEY_Cyrillic_ve, Key_Comma) \ + OP(XKB_KEY_Cyrillic_ya, Key_X) \ + OP(XKB_KEY_Cyrillic_yeru, Key_T) \ + OP(XKB_KEY_Cyrillic_yu, RALT(Key_F)) \ + OP(XKB_KEY_Cyrillic_ze, Key_Slash) \ + OP(XKB_KEY_Cyrillic_zhe, RALT(Key_Slash)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Q) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, Key_Minus) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Z)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_E)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Q)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_W))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_W)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Q))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Z))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_9)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_Z)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_plus, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Q)) \ + OP(XKB_KEY_semicolon, Key_Z) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pl { +namespace ru_phonetic_dvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ru_phonetic_dvorak +} // namespace pl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pl/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/pl/standard/keymap.h new file mode 100644 index 0000000000..a3a78534d6 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pl/standard/keymap.h @@ -0,0 +1,612 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pl +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_4)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_7)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_R)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_9)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'·', RALT(Key_8)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'»', RALT(Key_0)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_6)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_8))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_2))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_F))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ó', RALT(LSHIFT(Key_O))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_T)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_F)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ó', RALT(Key_O)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ą', RALT(LSHIFT(Key_A))) /* U+0104, XKB_KEY_Aogonek, LATIN CAPITAL LETTER A WITH OGONEK */ \ + OP(L'ą', RALT(Key_A)) /* U+0105, XKB_KEY_aogonek, LATIN SMALL LETTER A WITH OGONEK */ \ + OP(L'Ć', RALT(LSHIFT(Key_C))) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', RALT(Key_C)) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Ę', RALT(LSHIFT(Key_E))) /* U+0118, XKB_KEY_Eogonek, LATIN CAPITAL LETTER E WITH OGONEK */ \ + OP(L'ę', RALT(Key_E)) /* U+0119, XKB_KEY_eogonek, LATIN SMALL LETTER E WITH OGONEK */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ń', RALT(LSHIFT(Key_N))) /* U+0143, XKB_KEY_Nacute, LATIN CAPITAL LETTER N WITH ACUTE */ \ + OP(L'ń', RALT(Key_N)) /* U+0144, XKB_KEY_nacute, LATIN SMALL LETTER N WITH ACUTE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_W))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_W)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ś', RALT(LSHIFT(Key_S))) /* U+015a, XKB_KEY_Sacute, LATIN CAPITAL LETTER S WITH ACUTE */ \ + OP(L'ś', RALT(Key_S)) /* U+015b, XKB_KEY_sacute, LATIN SMALL LETTER S WITH ACUTE */ \ + OP(L'Ź', RALT(LSHIFT(Key_X))) /* U+0179, XKB_KEY_Zacute, LATIN CAPITAL LETTER Z WITH ACUTE */ \ + OP(L'ź', RALT(Key_X)) /* U+017a, XKB_KEY_zacute, LATIN SMALL LETTER Z WITH ACUTE */ \ + OP(L'Ż', RALT(LSHIFT(Key_Z))) /* U+017b, XKB_KEY_Zabovedot, LATIN CAPITAL LETTER Z WITH DOT ABOVE */ \ + OP(L'ż', RALT(Key_Z)) /* U+017c, XKB_KEY_zabovedot, LATIN SMALL LETTER Z WITH DOT ABOVE */ \ + OP(L'Ə', RALT(LSHIFT(Key_J))) /* U+018f, XKB_KEY_SCHWA, LATIN CAPITAL LETTER SCHWA */ \ + OP(L'ə', RALT(Key_J)) /* U+0259, XKB_KEY_schwa, LATIN SMALL LETTER SCHWA */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'π', RALT(Key_Q)) /* U+03c0, XKB_KEY_Greek_pi, GREEK SMALL LETTER PI */ \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Minus))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_H)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_B))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_V)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'•', RALT(LSHIFT(Key_H))) \ + OP(L'…', RALT(Key_K)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_T))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'↔', RALT(LSHIFT(Key_I))) \ + OP(L'∞', RALT(LSHIFT(Key_M))) /* U+221e, XKB_KEY_infinity, INFINITY */ \ + OP(L'∧', RALT(LSHIFT(Key_6))) /* U+2227, XKB_KEY_logicaland, LOGICAL AND */ \ + OP(L'∨', RALT(LSHIFT(Key_Backtick))) /* U+2228, XKB_KEY_logicalor, LOGICAL OR */ \ + OP(L'≈', RALT(LSHIFT(Key_7))) /* U+2248, XKB_KEY_approxeq, ALMOST EQUAL TO */ \ + OP(L'≠', RALT(Key_1)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'≤', RALT(Key_Comma)) /* U+2264, XKB_KEY_lessthanequal, LESS-THAN OR EQUAL TO */ \ + OP(L'≥', RALT(Key_Period)) /* U+2265, XKB_KEY_greaterthanequal, GREATER-THAN OR EQUAL TO */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aogonek, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Eogonek, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Greek_pi, RALT(Key_Q)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Nacute, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_SCHWA, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Sacute, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zabovedot, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Zacute, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_F)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_aogonek, RALT(Key_A)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_approxeq, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(Key_4)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_R)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_stroke, RALT(LSHIFT(Key_K))) /* XKB_KEY_dead_stroke */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_V)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_ellipsis, RALT(Key_K)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_eogonek, RALT(Key_E)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_greaterthanequal, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_9)) \ + OP(XKB_KEY_guillemotright, RALT(Key_0)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_infinity, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lessthanequal, RALT(Key_Comma)) \ + OP(XKB_KEY_logicaland, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_logicalor, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nacute, RALT(Key_N)) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notequal, RALT(Key_1)) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, RALT(Key_O)) \ + OP(XKB_KEY_oe, RALT(Key_W)) \ + OP(XKB_KEY_onehalf, RALT(Key_6)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_8)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_H)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_sacute, RALT(Key_S)) \ + OP(XKB_KEY_schwa, RALT(Key_J)) \ + OP(XKB_KEY_section, RALT(Key_7)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_T)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zabovedot, RALT(Key_Z)) \ + OP(XKB_KEY_zacute, RALT(Key_X)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pl { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace pl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pl/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/pl/sun_type6/keymap.h new file mode 100644 index 0000000000..da71274f02 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pl/sun_type6/keymap.h @@ -0,0 +1,478 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pl +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(Key_NonUsPound)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ó', RALT(LSHIFT(Key_O))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'ó', RALT(Key_O)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'Ą', RALT(LSHIFT(Key_A))) /* U+0104, XKB_KEY_Aogonek, LATIN CAPITAL LETTER A WITH OGONEK */ \ + OP(L'ą', RALT(Key_A)) /* U+0105, XKB_KEY_aogonek, LATIN SMALL LETTER A WITH OGONEK */ \ + OP(L'Ć', RALT(LSHIFT(Key_C))) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', RALT(Key_C)) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Ę', RALT(LSHIFT(Key_E))) /* U+0118, XKB_KEY_Eogonek, LATIN CAPITAL LETTER E WITH OGONEK */ \ + OP(L'ę', RALT(Key_E)) /* U+0119, XKB_KEY_eogonek, LATIN SMALL LETTER E WITH OGONEK */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ń', RALT(LSHIFT(Key_N))) /* U+0143, XKB_KEY_Nacute, LATIN CAPITAL LETTER N WITH ACUTE */ \ + OP(L'ń', RALT(Key_N)) /* U+0144, XKB_KEY_nacute, LATIN SMALL LETTER N WITH ACUTE */ \ + OP(L'Ś', RALT(LSHIFT(Key_S))) /* U+015a, XKB_KEY_Sacute, LATIN CAPITAL LETTER S WITH ACUTE */ \ + OP(L'ś', RALT(Key_S)) /* U+015b, XKB_KEY_sacute, LATIN SMALL LETTER S WITH ACUTE */ \ + OP(L'Ź', RALT(LSHIFT(Key_X))) /* U+0179, XKB_KEY_Zacute, LATIN CAPITAL LETTER Z WITH ACUTE */ \ + OP(L'ź', RALT(Key_X)) /* U+017a, XKB_KEY_zacute, LATIN SMALL LETTER Z WITH ACUTE */ \ + OP(L'Ż', RALT(LSHIFT(Key_Z))) /* U+017b, XKB_KEY_Zabovedot, LATIN CAPITAL LETTER Z WITH DOT ABOVE */ \ + OP(L'ż', RALT(Key_Z)) /* U+017c, XKB_KEY_zabovedot, LATIN SMALL LETTER Z WITH DOT ABOVE */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aogonek, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Eogonek, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Nacute, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Sacute, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zabovedot, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Zacute, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_aogonek, RALT(Key_A)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eogonek, RALT(Key_E)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nacute, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_sacute, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zabovedot, RALT(Key_Z)) \ + OP(XKB_KEY_zacute, RALT(Key_X)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pl { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace pl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pl/szl/keymap.h b/src/kaleidoscope/host_keymap/linux/pl/szl/keymap.h new file mode 100644 index 0000000000..d0b5421c35 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pl/szl/keymap.h @@ -0,0 +1,588 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pl +// variant: szl + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ã', RALT(LSHIFT(Key_E))) /* U+00c3, XKB_KEY_Atilde, LATIN CAPITAL LETTER A WITH TILDE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ô', RALT(LSHIFT(Key_O))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Õ', RALT(LSHIFT(Key_P))) /* U+00d5, XKB_KEY_Otilde, LATIN CAPITAL LETTER O WITH TILDE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'ã', RALT(Key_E)) /* U+00e3, XKB_KEY_atilde, LATIN SMALL LETTER A WITH TILDE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ô', RALT(Key_O)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'õ', RALT(Key_P)) /* U+00f5, XKB_KEY_otilde, LATIN SMALL LETTER O WITH TILDE */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ć', RALT(LSHIFT(Key_C))) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', RALT(Key_C)) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ń', RALT(LSHIFT(Key_N))) /* U+0143, XKB_KEY_Nacute, LATIN CAPITAL LETTER N WITH ACUTE */ \ + OP(L'ń', RALT(Key_N)) /* U+0144, XKB_KEY_nacute, LATIN SMALL LETTER N WITH ACUTE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ō', RALT(LSHIFT(Key_U))) /* U+014c, XKB_KEY_Omacron, LATIN CAPITAL LETTER O WITH MACRON */ \ + OP(L'ō', RALT(Key_U)) /* U+014d, XKB_KEY_omacron, LATIN SMALL LETTER O WITH MACRON */ \ + OP(L'Ŏ', RALT(LSHIFT(Key_A))) \ + OP(L'ŏ', RALT(Key_A)) \ + OP(L'Ś', RALT(LSHIFT(Key_S))) /* U+015a, XKB_KEY_Sacute, LATIN CAPITAL LETTER S WITH ACUTE */ \ + OP(L'ś', RALT(Key_S)) /* U+015b, XKB_KEY_sacute, LATIN SMALL LETTER S WITH ACUTE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ź', RALT(LSHIFT(Key_X))) /* U+0179, XKB_KEY_Zacute, LATIN CAPITAL LETTER Z WITH ACUTE */ \ + OP(L'ź', RALT(Key_X)) /* U+017a, XKB_KEY_zacute, LATIN SMALL LETTER Z WITH ACUTE */ \ + OP(L'Ż', RALT(LSHIFT(Key_Z))) /* U+017b, XKB_KEY_Zabovedot, LATIN CAPITAL LETTER Z WITH DOT ABOVE */ \ + OP(L'ż', RALT(Key_Z)) /* U+017c, XKB_KEY_zabovedot, LATIN SMALL LETTER Z WITH DOT ABOVE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Atilde, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Nacute, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Omacron, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Otilde, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Sacute, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zabovedot, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Zacute, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_atilde, RALT(Key_E)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nacute, RALT(Key_N)) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, RALT(Key_O)) \ + OP(XKB_KEY_omacron, RALT(Key_U)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_otilde, RALT(Key_P)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_sacute, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zabovedot, RALT(Key_Z)) \ + OP(XKB_KEY_zacute, RALT(Key_X)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pl { +namespace szl { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace szl +} // namespace pl +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pt/mac/keymap.h b/src/kaleidoscope/host_keymap/linux/pt/mac/keymap.h new file mode 100644 index 0000000000..4db8311956 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pt/mac/keymap.h @@ -0,0 +1,568 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pt +// variant: mac + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', RALT(Key_4)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', LSHIFT(Key_LeftBracket)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', Key_LeftBracket) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_Semicolon)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_Semicolon) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_Semicolon) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_RightBracket) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Equals)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, Key_Quote) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, Key_LeftBracket) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_4)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pt { +namespace mac { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mac +} // namespace pt +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pt/mac_nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/pt/mac_nodeadkeys/keymap.h new file mode 100644 index 0000000000..237506511b --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pt/mac_nodeadkeys/keymap.h @@ -0,0 +1,572 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pt +// variant: mac_nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_Quote)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', Key_Quote) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_Quote)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', Key_Quote) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', RALT(Key_4)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', LSHIFT(Key_LeftBracket)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'´', Key_RightBracket) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', Key_LeftBracket) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_Semicolon)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_Semicolon) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, Key_RightBracket) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_asciitilde, Key_Quote) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_Semicolon) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, Key_LeftBracket) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_4)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pt { +namespace mac_nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mac_nodeadkeys +} // namespace pt +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pt/mac_sundeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/pt/mac_sundeadkeys/keymap.h new file mode 100644 index 0000000000..2a541f6804 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pt/mac_sundeadkeys/keymap.h @@ -0,0 +1,567 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pt +// variant: mac_sundeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', RALT(Key_4)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', LSHIFT(Key_LeftBracket)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', Key_LeftBracket) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_Semicolon)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_Semicolon) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_Semicolon) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_RightBracket) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Equals)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, Key_Quote) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, Key_LeftBracket) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_4)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pt { +namespace mac_sundeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mac_sundeadkeys +} // namespace pt +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pt/nativo-epo/keymap.h b/src/kaleidoscope/host_keymap/linux/pt/nativo-epo/keymap.h new file mode 100644 index 0000000000..9a3fbd5f54 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pt/nativo-epo/keymap.h @@ -0,0 +1,588 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pt +// variant: nativo-epo + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Backtick) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_RightBracket) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_E)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_W)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_Equals) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Equals)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Q)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_D)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_V)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_O)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_J)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_S)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Period)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_Comma)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_R)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_A)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_B)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_H)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_Semicolon)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_F)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_N))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_L)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_K)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_I)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_M)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', RALT(LSHIFT(Key_Y))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', RALT(LSHIFT(Key_T))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', RALT(LSHIFT(Key_Z))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_RightBracket)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_D) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_V) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_O) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_J) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_S) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Period) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_Comma) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_R) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_A) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_B) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_H) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_Semicolon) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_F) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', RALT(Key_N)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_L) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_K) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_I) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_M) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', RALT(Key_Y)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', RALT(Key_T)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', RALT(Key_Z)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Backtick) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_RightBracket) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_E)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_W)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_Equals) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Equals)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Q)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_D)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_V)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_O)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_J)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_S)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Period)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_Comma)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_R)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_A)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_B)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_H)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_Semicolon)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_F)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_N))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_L)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_K)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_I)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_M)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', RALT(LSHIFT(Key_Y))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', RALT(LSHIFT(Key_T))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', RALT(LSHIFT(Key_Z))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_RightBracket)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_D) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_V) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_O) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_J) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_S) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Period) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_Comma) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_R) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_A) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_B) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_H) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_Semicolon) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_F) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', RALT(Key_N)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_L) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_K) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_I) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_M) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', RALT(Key_Y)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', RALT(Key_T)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', RALT(Key_Z)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_5)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_B)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_B))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_4)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_6))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_O)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', LSHIFT(Key_Minus)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', Key_NonUsBackslashAndPipe) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_L)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Q)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Backtick))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_H)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_E))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', Key_Minus) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'¿', RALT(LSHIFT(Key_Q))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_D))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_X))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_J))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ø', RALT(LSHIFT(Key_G))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_K)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_D)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_X)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_J)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ø', RALT(Key_G)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ĉ', LSHIFT(Key_T)) /* U+0108, XKB_KEY_Ccircumflex, LATIN CAPITAL LETTER C WITH CIRCUMFLEX */ \ + OP(L'ĉ', Key_T) /* U+0109, XKB_KEY_ccircumflex, LATIN SMALL LETTER C WITH CIRCUMFLEX */ \ + OP(L'Ĝ', LSHIFT(Key_N)) /* U+011c, XKB_KEY_Gcircumflex, LATIN CAPITAL LETTER G WITH CIRCUMFLEX */ \ + OP(L'ĝ', Key_N) /* U+011d, XKB_KEY_gcircumflex, LATIN SMALL LETTER G WITH CIRCUMFLEX */ \ + OP(L'Ĥ', RALT(LSHIFT(Key_R))) /* U+0124, XKB_KEY_Hcircumflex, LATIN CAPITAL LETTER H WITH CIRCUMFLEX */ \ + OP(L'ĥ', RALT(Key_R)) /* U+0125, XKB_KEY_hcircumflex, LATIN SMALL LETTER H WITH CIRCUMFLEX */ \ + OP(L'İ', RALT(LSHIFT(Key_A))) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'ı', RALT(Key_A)) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ĵ', LSHIFT(Key_Z)) /* U+0134, XKB_KEY_Jcircumflex, LATIN CAPITAL LETTER J WITH CIRCUMFLEX */ \ + OP(L'ĵ', Key_Z) /* U+0135, XKB_KEY_jcircumflex, LATIN SMALL LETTER J WITH CIRCUMFLEX */ \ + OP(L'Ł', RALT(LSHIFT(Key_U))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_U)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_Semicolon))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_Semicolon)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_F))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_F)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ŝ', LSHIFT(Key_X)) /* U+015c, XKB_KEY_Scircumflex, LATIN CAPITAL LETTER S WITH CIRCUMFLEX */ \ + OP(L'ŝ', Key_X) /* U+015d, XKB_KEY_scircumflex, LATIN SMALL LETTER S WITH CIRCUMFLEX */ \ + OP(L'Ŭ', LSHIFT(Key_Y)) /* U+016c, XKB_KEY_Ubreve, LATIN CAPITAL LETTER U WITH BREVE */ \ + OP(L'ŭ', Key_Y) /* U+016d, XKB_KEY_ubreve, LATIN SMALL LETTER U WITH BREVE */ \ + OP(L'Ʒ', RALT(LSHIFT(Key_C))) /* U+01b7, XKB_KEY_EZH, LATIN CAPITAL LETTER EZH */ \ + OP(L'ʒ', RALT(Key_C)) /* U+0292, XKB_KEY_ezh, LATIN SMALL LETTER EZH */ \ + OP(L'̕', RALT(LSHIFT(Key_W))) \ + OP(L'̦', RALT(LSHIFT(Key_Minus))) \ + OP(L'̩', RALT(Key_W)) \ + OP(L'̭', RALT(LSHIFT(Key_7))) \ + OP(L'̱', RALT(LSHIFT(Key_8))) \ + OP(L'̶', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'―', RALT(Key_RightBracket)) \ + OP(L'‘', RALT(LSHIFT(Key_Comma))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_Period))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_M))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'‛', RALT(LSHIFT(Key_Slash))) \ + OP(L'“', RALT(Key_Comma)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_Period)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_M)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'‟', RALT(Key_Slash)) \ + OP(L'•', RALT(Key_E)) \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'‹', RALT(Key_NonUsBackslashAndPipe)) \ + OP(L'›', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(L'€', RALT(Key_S)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(Key_I)) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_D)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_V)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_O)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_Ccircumflex, LSHIFT(Key_T)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_J)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_S)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_J))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_EZH, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_S)) \ + OP(XKB_KEY_F, LSHIFT(Key_Period)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Gcircumflex, LSHIFT(Key_N)) \ + OP(XKB_KEY_H, LSHIFT(Key_R)) \ + OP(XKB_KEY_Hcircumflex, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_A)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_Jcircumflex, LSHIFT(Key_Z)) \ + OP(XKB_KEY_K, LSHIFT(Key_B)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_U)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_M, LSHIFT(Key_H)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_F)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_R, LSHIFT(Key_L)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_K)) \ + OP(XKB_KEY_Scircumflex, LSHIFT(Key_X)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_I)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_G)) \ + OP(XKB_KEY_Ubreve, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_M)) \ + OP(XKB_KEY_W, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_X, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_D) \ + OP(XKB_KEY_ae, RALT(Key_D)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Q) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_V) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_c, Key_O) \ + OP(XKB_KEY_ccedilla, RALT(Key_X)) \ + OP(XKB_KEY_ccircumflex, Key_T) \ + OP(XKB_KEY_cent, RALT(Key_5)) \ + OP(XKB_KEY_colon, LSHIFT(Key_E)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_copyright, RALT(Key_O)) \ + OP(XKB_KEY_currency, RALT(Key_B)) \ + OP(XKB_KEY_d, Key_J) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_NonUsPound)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_LeftBracket)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Backtick)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Quote)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_9))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Quote)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_Minus)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, Key_LeftBracket) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_Q)) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_M)) \ + OP(XKB_KEY_e, Key_S) \ + OP(XKB_KEY_eng, RALT(Key_Semicolon)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_J)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ezh, RALT(Key_C)) \ + OP(XKB_KEY_f, Key_Period) \ + OP(XKB_KEY_g, Key_Comma) \ + OP(XKB_KEY_gcircumflex, Key_N) \ + OP(XKB_KEY_greater, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_guillemotleft, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_R) \ + OP(XKB_KEY_hcircumflex, RALT(Key_R)) \ + OP(XKB_KEY_i, Key_A) \ + OP(XKB_KEY_idotless, RALT(Key_A)) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_jcircumflex, Key_Z) \ + OP(XKB_KEY_k, Key_B) \ + OP(XKB_KEY_l, Key_U) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_Comma)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_less, Key_Equals) \ + OP(XKB_KEY_lstroke, RALT(Key_U)) \ + OP(XKB_KEY_m, Key_H) \ + OP(XKB_KEY_masculine, Key_Minus) \ + OP(XKB_KEY_minus, Key_RightBracket) \ + OP(XKB_KEY_mu, RALT(Key_H)) \ + OP(XKB_KEY_n, Key_Semicolon) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_F) \ + OP(XKB_KEY_oe, RALT(Key_F)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_oslash, RALT(Key_G)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_plus, Key_Backtick) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_q, RALT(Key_N)) \ + OP(XKB_KEY_question, LSHIFT(Key_Q)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_L) \ + OP(XKB_KEY_registered, RALT(Key_L)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_Period)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_s, Key_K) \ + OP(XKB_KEY_scircumflex, Key_X) \ + OP(XKB_KEY_section, RALT(Key_4)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_W)) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_K)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_I) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_trademark, RALT(Key_I)) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_G) \ + OP(XKB_KEY_ubreve, Key_Y) \ + OP(XKB_KEY_underscore, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_v, Key_M) \ + OP(XKB_KEY_w, RALT(Key_Y)) \ + OP(XKB_KEY_x, RALT(Key_T)) \ + OP(XKB_KEY_y, RALT(Key_Z)) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pt { +namespace nativo_epo { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace nativo_epo +} // namespace pt +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pt/nativo-us/keymap.h b/src/kaleidoscope/host_keymap/linux/pt/nativo-us/keymap.h new file mode 100644 index 0000000000..a63f7e7375 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pt/nativo-us/keymap.h @@ -0,0 +1,578 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pt +// variant: nativo-us + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Backtick) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_RightBracket) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_E)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_W)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_Equals) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Equals)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Q)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_D)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_V)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_O)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_J)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_S)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Period)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_Comma)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_R)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_A)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_B)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_H)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_Semicolon)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_F)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_N)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_L)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_K)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_I)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_M)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Y)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_T)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_RightBracket)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_D) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_V) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_O) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_J) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_S) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Period) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_Comma) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_R) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_A) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_B) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_H) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_Semicolon) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_F) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_N) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_L) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_K) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_I) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_M) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Y) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_T) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Backtick) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_RightBracket) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_E)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_W)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_Equals) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Equals)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Q)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_D)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_V)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_O)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_J)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_S)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Period)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_Comma)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_R)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_A)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_B)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_H)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_Semicolon)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_F)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_N)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_L)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_K)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_I)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_M)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Y)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_T)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_RightBracket)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_D) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_V) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_O) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_J) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_S) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Period) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_Comma) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_R) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_A) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_B) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_H) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_Semicolon) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_F) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_N) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_L) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_K) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_I) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_M) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Y) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_T) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_5)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_B)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_B))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_4)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_6))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_O)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', LSHIFT(Key_Minus)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', Key_X) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_L)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Q)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Backtick))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_H)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_E))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', Key_Minus) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', LSHIFT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'¿', RALT(LSHIFT(Key_Q))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_D))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_Z))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_J))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(Key_T)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_G))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_K)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_D)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_Z)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_J)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_T))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_G)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'İ', RALT(LSHIFT(Key_A))) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'ı', RALT(Key_A)) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_U))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_U)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_Semicolon))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_Semicolon)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_F))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_F)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ŭ', RALT(LSHIFT(Key_Y))) /* U+016c, XKB_KEY_Ubreve, LATIN CAPITAL LETTER U WITH BREVE */ \ + OP(L'ŭ', RALT(Key_Y)) /* U+016d, XKB_KEY_ubreve, LATIN SMALL LETTER U WITH BREVE */ \ + OP(L'Ə', RALT(LSHIFT(Key_N))) /* U+018f, XKB_KEY_SCHWA, LATIN CAPITAL LETTER SCHWA */ \ + OP(L'Ʒ', RALT(LSHIFT(Key_C))) /* U+01b7, XKB_KEY_EZH, LATIN CAPITAL LETTER EZH */ \ + OP(L'ə', RALT(Key_N)) /* U+0259, XKB_KEY_schwa, LATIN SMALL LETTER SCHWA */ \ + OP(L'ʒ', RALT(Key_C)) /* U+0292, XKB_KEY_ezh, LATIN SMALL LETTER EZH */ \ + OP(L'̕', RALT(LSHIFT(Key_W))) \ + OP(L'̦', RALT(LSHIFT(Key_Minus))) \ + OP(L'̩', RALT(Key_W)) \ + OP(L'̭', RALT(LSHIFT(Key_7))) \ + OP(L'̱', RALT(LSHIFT(Key_8))) \ + OP(L'̶', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'―', RALT(Key_RightBracket)) \ + OP(L'‘', RALT(LSHIFT(Key_Comma))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_Period))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_M))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'‛', RALT(LSHIFT(Key_Slash))) \ + OP(L'“', RALT(Key_Comma)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_Period)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_M)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'‟', RALT(Key_Slash)) \ + OP(L'•', RALT(Key_E)) \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'‹', RALT(Key_X)) \ + OP(L'›', RALT(LSHIFT(Key_X))) \ + OP(L'€', RALT(Key_S)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(Key_I)) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_D)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_V)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_O)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_J)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_S)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_J))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_EZH, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_S)) \ + OP(XKB_KEY_F, LSHIFT(Key_Period)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_H, LSHIFT(Key_R)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_A)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_B)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_U)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_M, LSHIFT(Key_H)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_F)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_N)) \ + OP(XKB_KEY_R, LSHIFT(Key_L)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_K)) \ + OP(XKB_KEY_SCHWA, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_I)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_G)) \ + OP(XKB_KEY_Ubreve, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_M)) \ + OP(XKB_KEY_W, LSHIFT(Key_Y)) \ + OP(XKB_KEY_X, LSHIFT(Key_T)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_D) \ + OP(XKB_KEY_ae, RALT(Key_D)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Q) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_V) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_c, Key_O) \ + OP(XKB_KEY_ccedilla, RALT(Key_Z)) \ + OP(XKB_KEY_cent, RALT(Key_5)) \ + OP(XKB_KEY_colon, LSHIFT(Key_E)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_copyright, RALT(Key_O)) \ + OP(XKB_KEY_currency, RALT(Key_B)) \ + OP(XKB_KEY_d, Key_J) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_NonUsPound)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_LeftBracket)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Backtick)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Quote)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_9))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Quote)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_Minus)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, Key_LeftBracket) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_Q)) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_M)) \ + OP(XKB_KEY_e, Key_S) \ + OP(XKB_KEY_eng, RALT(Key_Semicolon)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_J)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ezh, RALT(Key_C)) \ + OP(XKB_KEY_f, Key_Period) \ + OP(XKB_KEY_g, Key_Comma) \ + OP(XKB_KEY_greater, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_guillemotleft, Key_X) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_X)) \ + OP(XKB_KEY_h, Key_R) \ + OP(XKB_KEY_i, Key_A) \ + OP(XKB_KEY_idotless, RALT(Key_A)) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_B) \ + OP(XKB_KEY_l, Key_U) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_Comma)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_less, Key_Equals) \ + OP(XKB_KEY_lstroke, RALT(Key_U)) \ + OP(XKB_KEY_m, Key_H) \ + OP(XKB_KEY_masculine, Key_Minus) \ + OP(XKB_KEY_minus, Key_RightBracket) \ + OP(XKB_KEY_mu, RALT(Key_H)) \ + OP(XKB_KEY_multiply, RALT(Key_T)) \ + OP(XKB_KEY_n, Key_Semicolon) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_F) \ + OP(XKB_KEY_oe, RALT(Key_F)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_oslash, RALT(Key_G)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_plus, Key_Backtick) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_q, Key_N) \ + OP(XKB_KEY_question, LSHIFT(Key_Q)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_L) \ + OP(XKB_KEY_registered, RALT(Key_L)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_Period)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_s, Key_K) \ + OP(XKB_KEY_schwa, RALT(Key_N)) \ + OP(XKB_KEY_section, RALT(Key_4)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_W)) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_K)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_I) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_trademark, RALT(Key_I)) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_G) \ + OP(XKB_KEY_ubreve, RALT(Key_Y)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_v, Key_M) \ + OP(XKB_KEY_w, Key_Y) \ + OP(XKB_KEY_x, Key_T) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pt { +namespace nativo_us { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace nativo_us +} // namespace pt +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pt/nativo/keymap.h b/src/kaleidoscope/host_keymap/linux/pt/nativo/keymap.h new file mode 100644 index 0000000000..dbc37054b9 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pt/nativo/keymap.h @@ -0,0 +1,580 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pt +// variant: nativo + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Backtick) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_RightBracket) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_E)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_W)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_Equals) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Equals)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Q)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_D)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_V)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_O)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_J)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_S)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Period)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_Comma)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_R)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_A)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_B)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_H)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_Semicolon)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_F)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_N)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_L)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_K)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_I)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_M)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Y)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_T)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_RightBracket)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_D) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_V) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_O) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_J) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_S) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Period) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_Comma) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_R) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_A) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_B) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_H) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_Semicolon) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_F) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_N) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_L) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_K) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_I) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_M) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Y) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_T) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Backtick) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_RightBracket) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_E)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_W)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_Equals) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Equals)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Q)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_D)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_V)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_O)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_J)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_S)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Period)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_Comma)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_R)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_A)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_B)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_H)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_Semicolon)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_F)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_N)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_L)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_K)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_I)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_M)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Y)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_T)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_RightBracket)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_D) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_V) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_O) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_J) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_S) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Period) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_Comma) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_R) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_A) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_B) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_H) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_Semicolon) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_F) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_N) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_L) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_K) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_I) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_M) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Y) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_T) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_5)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_B)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_Z)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_B))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_4)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_6))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_O)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', LSHIFT(Key_Minus)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', Key_NonUsBackslashAndPipe) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_L)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Q)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Backtick))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_H)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_E))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', Key_Minus) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'¿', RALT(LSHIFT(Key_Q))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_D))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_X)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_J))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(Key_T)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_G))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_K)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_D)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_X) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_J)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_T))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_G)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'İ', RALT(LSHIFT(Key_A))) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'ı', RALT(Key_A)) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_U))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_U)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_Semicolon))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_Semicolon)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_F))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_F)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ŭ', RALT(LSHIFT(Key_Y))) /* U+016c, XKB_KEY_Ubreve, LATIN CAPITAL LETTER U WITH BREVE */ \ + OP(L'ŭ', RALT(Key_Y)) /* U+016d, XKB_KEY_ubreve, LATIN SMALL LETTER U WITH BREVE */ \ + OP(L'Ə', RALT(LSHIFT(Key_N))) /* U+018f, XKB_KEY_SCHWA, LATIN CAPITAL LETTER SCHWA */ \ + OP(L'Ʒ', RALT(LSHIFT(Key_C))) /* U+01b7, XKB_KEY_EZH, LATIN CAPITAL LETTER EZH */ \ + OP(L'ə', RALT(Key_N)) /* U+0259, XKB_KEY_schwa, LATIN SMALL LETTER SCHWA */ \ + OP(L'ʒ', RALT(Key_C)) /* U+0292, XKB_KEY_ezh, LATIN SMALL LETTER EZH */ \ + OP(L'̕', RALT(LSHIFT(Key_W))) \ + OP(L'̦', RALT(LSHIFT(Key_Minus))) \ + OP(L'̩', RALT(Key_W)) \ + OP(L'̭', RALT(LSHIFT(Key_7))) \ + OP(L'̱', RALT(LSHIFT(Key_8))) \ + OP(L'̶', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'―', RALT(Key_RightBracket)) \ + OP(L'‘', RALT(LSHIFT(Key_Comma))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_Period))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_M))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'‛', RALT(LSHIFT(Key_Slash))) \ + OP(L'“', RALT(Key_Comma)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_Period)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_M)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'‟', RALT(Key_Slash)) \ + OP(L'•', RALT(Key_E)) \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'‹', RALT(Key_NonUsBackslashAndPipe)) \ + OP(L'›', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(L'€', RALT(Key_S)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(Key_I)) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_D)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_V)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_O)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_X)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_J)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_S)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_J))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_EZH, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_S)) \ + OP(XKB_KEY_F, LSHIFT(Key_Period)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_H, LSHIFT(Key_R)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_A)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_B)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_U)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_M, LSHIFT(Key_H)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_F)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_N)) \ + OP(XKB_KEY_R, LSHIFT(Key_L)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_K)) \ + OP(XKB_KEY_SCHWA, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_I)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_G)) \ + OP(XKB_KEY_Ubreve, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_M)) \ + OP(XKB_KEY_W, LSHIFT(Key_Y)) \ + OP(XKB_KEY_X, LSHIFT(Key_T)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_D) \ + OP(XKB_KEY_ae, RALT(Key_D)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Q) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_V) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_c, Key_O) \ + OP(XKB_KEY_ccedilla, Key_X) \ + OP(XKB_KEY_cent, RALT(Key_5)) \ + OP(XKB_KEY_colon, LSHIFT(Key_E)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_copyright, RALT(Key_O)) \ + OP(XKB_KEY_currency, RALT(Key_B)) \ + OP(XKB_KEY_d, Key_J) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_NonUsPound)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_LeftBracket)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Backtick)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Quote)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_9))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Quote)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_Minus)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, Key_LeftBracket) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_Q)) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_M)) \ + OP(XKB_KEY_e, Key_S) \ + OP(XKB_KEY_eng, RALT(Key_Semicolon)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_J)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ezh, RALT(Key_C)) \ + OP(XKB_KEY_f, Key_Period) \ + OP(XKB_KEY_g, Key_Comma) \ + OP(XKB_KEY_greater, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_guillemotleft, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_R) \ + OP(XKB_KEY_i, Key_A) \ + OP(XKB_KEY_idotless, RALT(Key_A)) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_B) \ + OP(XKB_KEY_l, Key_U) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_Comma)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_less, Key_Equals) \ + OP(XKB_KEY_lstroke, RALT(Key_U)) \ + OP(XKB_KEY_m, Key_H) \ + OP(XKB_KEY_masculine, Key_Minus) \ + OP(XKB_KEY_minus, Key_RightBracket) \ + OP(XKB_KEY_mu, RALT(Key_H)) \ + OP(XKB_KEY_multiply, RALT(Key_T)) \ + OP(XKB_KEY_n, Key_Semicolon) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_F) \ + OP(XKB_KEY_oe, RALT(Key_F)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_oslash, RALT(Key_G)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_plus, Key_Backtick) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_q, Key_N) \ + OP(XKB_KEY_question, LSHIFT(Key_Q)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_L) \ + OP(XKB_KEY_registered, RALT(Key_L)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_Period)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_s, Key_K) \ + OP(XKB_KEY_schwa, RALT(Key_N)) \ + OP(XKB_KEY_section, RALT(Key_4)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_W)) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_K)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_I) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_trademark, RALT(Key_I)) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_G) \ + OP(XKB_KEY_ubreve, RALT(Key_Y)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_v, Key_M) \ + OP(XKB_KEY_w, Key_Y) \ + OP(XKB_KEY_x, Key_T) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(Key_Z)) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pt { +namespace nativo { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace nativo +} // namespace pt +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pt/nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/pt/nodeadkeys/keymap.h new file mode 100644 index 0000000000..d7fb79da06 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pt/nodeadkeys/keymap.h @@ -0,0 +1,577 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pt +// variant: nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_LeftBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_Quote)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_RightBracket)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', Key_NonUsPound) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_LeftBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_Quote)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_RightBracket)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', Key_NonUsPound) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', RALT(Key_4)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', LSHIFT(Key_Quote)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', Key_Equals) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'´', Key_RightBracket) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¸', RALT(Key_Equals)) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', Key_Quote) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', LSHIFT(Key_Equals)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_Semicolon)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_Semicolon) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ˇ', RALT(LSHIFT(Key_Quote))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˙', RALT(LSHIFT(Key_Slash))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_Equals))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_Semicolon))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_acute, Key_RightBracket) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_Quote)) \ + OP(XKB_KEY_asciitilde, Key_NonUsPound) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_Backtick) \ + OP(XKB_KEY_bar, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_ccedilla, Key_Semicolon) \ + OP(XKB_KEY_cedilla, RALT(Key_Equals)) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_RightBracket)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, Key_Equals) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, Key_Quote) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_LeftBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_4)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pt { +namespace nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace nodeadkeys +} // namespace pt +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pt/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/pt/standard/keymap.h new file mode 100644 index 0000000000..f3f256150b --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pt/standard/keymap.h @@ -0,0 +1,565 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pt +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_LeftBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_LeftBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', RALT(Key_4)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', LSHIFT(Key_Quote)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', Key_Equals) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', Key_Quote) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', LSHIFT(Key_Equals)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_Semicolon)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_Semicolon) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_Backtick) \ + OP(XKB_KEY_bar, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_Semicolon) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_RightBracket) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, Key_NonUsPound) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, Key_Equals) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, Key_Quote) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_LeftBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_4)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pt { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace pt +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pt/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/pt/sun_type6/keymap.h new file mode 100644 index 0000000000..c7578f8504 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pt/sun_type6/keymap.h @@ -0,0 +1,463 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pt +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_LeftBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Minus)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_5)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_LeftBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Minus)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_5)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_4)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'ª', LSHIFT(Key_Quote)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', Key_Equals) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'º', Key_Quote) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', LSHIFT(Key_Equals)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Ç', LSHIFT(Key_Semicolon)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'ç', Key_Semicolon) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(Key_5)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_Backtick) \ + OP(XKB_KEY_bar, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_Semicolon) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, Key_RightBracket) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_NonUsPound)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, Key_NonUsPound) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Minus)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, Key_Equals) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, Key_Quote) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ordfeminine, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_LeftBracket) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_4)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pt { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace pt +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/pt/sundeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/pt/sundeadkeys/keymap.h new file mode 100644 index 0000000000..281031cb6e --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/pt/sundeadkeys/keymap.h @@ -0,0 +1,564 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: pt +// variant: sundeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_LeftBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_LeftBracket) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Backtick) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_Backtick)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', RALT(Key_4)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', LSHIFT(Key_Quote)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', Key_Equals) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_6)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', Key_Quote) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', LSHIFT(Key_Equals)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', LSHIFT(Key_Semicolon)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_Semicolon) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_Backtick) \ + OP(XKB_KEY_bar, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_Semicolon) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, Key_RightBracket) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, Key_NonUsPound) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, Key_Equals) \ + OP(XKB_KEY_guillemotright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, Key_Quote) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_6)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_LeftBracket) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_4)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace pt { +namespace sundeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sundeadkeys +} // namespace pt +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ro/cedilla/keymap.h b/src/kaleidoscope/host_keymap/linux/ro/cedilla/keymap.h new file mode 100644 index 0000000000..935cec6e3b --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ro/cedilla/keymap.h @@ -0,0 +1,500 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ro +// variant: cedilla + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_P)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Comma)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'±', RALT(LSHIFT(Key_Equals))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'»', RALT(Key_Period)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Â', RALT(LSHIFT(Key_Q))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ß', RALT(Key_W)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'â', RALT(Key_Q)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ă', RALT(LSHIFT(Key_A))) /* U+0102, XKB_KEY_Abreve, LATIN CAPITAL LETTER A WITH BREVE */ \ + OP(L'ă', RALT(Key_A)) /* U+0103, XKB_KEY_abreve, LATIN SMALL LETTER A WITH BREVE */ \ + OP(L'Đ', RALT(LSHIFT(Key_D))) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_D)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ş', RALT(LSHIFT(Key_S))) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', RALT(Key_S)) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ţ', RALT(LSHIFT(Key_T))) /* U+0162, XKB_KEY_Tcedilla, LATIN CAPITAL LETTER T WITH CEDILLA */ \ + OP(L'ţ', RALT(Key_T)) /* U+0163, XKB_KEY_tcedilla, LATIN SMALL LETTER T WITH CEDILLA */ \ + OP(L'–', RALT(LSHIFT(Key_Minus))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'”', RALT(Key_RightBracket)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_LeftBracket)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Abreve, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tcedilla, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abreve, RALT(Key_A)) \ + OP(XKB_KEY_acircumflex, RALT(Key_Q)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dstroke, RALT(Key_D)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Comma)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_RightBracket)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, RALT(Key_S)) \ + OP(XKB_KEY_section, RALT(Key_P)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_W)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_tcedilla, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ro { +namespace cedilla { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace cedilla +} // namespace ro +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ro/crh_dobruja/keymap.h b/src/kaleidoscope/host_keymap/linux/ro/crh_dobruja/keymap.h new file mode 100644 index 0000000000..e8bf3e5723 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ro/crh_dobruja/keymap.h @@ -0,0 +1,569 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ro +// variant: crh_dobruja + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_Backtick) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_2)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_NonUsPound) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_NonUsPound)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_1)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', RALT(LSHIFT(Key_Minus))) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', RALT(LSHIFT(Key_J))) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_Minus)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', LSHIFT(Key_Backtick)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_Quote) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', RALT(Key_J)) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_Minus) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_Backtick) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_2)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_NonUsPound) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_NonUsPound)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_1)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', RALT(LSHIFT(Key_Minus))) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', RALT(LSHIFT(Key_J))) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_Minus)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', LSHIFT(Key_Backtick)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_Quote) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', RALT(Key_J)) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_Minus) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_2)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_P)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Semicolon)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'Â', RALT(LSHIFT(Key_A))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ç', LSHIFT(Key_Period)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Í', RALT(LSHIFT(Key_F))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ñ', LSHIFT(Key_X)) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ô', RALT(LSHIFT(Key_O))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', LSHIFT(Key_Comma)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Û', RALT(LSHIFT(Key_U))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', LSHIFT(Key_RightBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'â', RALT(Key_A)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ç', Key_Period) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'í', RALT(Key_F)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ñ', Key_X) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ô', RALT(Key_O)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', Key_Comma) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'û', RALT(Key_U)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', Key_RightBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Ă', RALT(LSHIFT(Key_W))) /* U+0102, XKB_KEY_Abreve, LATIN CAPITAL LETTER A WITH BREVE */ \ + OP(L'ă', RALT(Key_W)) /* U+0103, XKB_KEY_abreve, LATIN SMALL LETTER A WITH BREVE */ \ + OP(L'Ğ', LSHIFT(Key_LeftBracket)) /* U+011e, XKB_KEY_Gbreve, LATIN CAPITAL LETTER G WITH BREVE */ \ + OP(L'ğ', Key_LeftBracket) /* U+011f, XKB_KEY_gbreve, LATIN SMALL LETTER G WITH BREVE */ \ + OP(L'Ĭ', LSHIFT(Key_J)) /* U+012c, XKB_KEY_Ibreve, LATIN CAPITAL LETTER I WITH BREVE */ \ + OP(L'ĭ', Key_J) /* U+012d, XKB_KEY_ibreve, LATIN SMALL LETTER I WITH BREVE */ \ + OP(L'İ', LSHIFT(Key_Quote)) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'ı', Key_I) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ş', LSHIFT(Key_Semicolon)) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', Key_Semicolon) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ș', RALT(LSHIFT(Key_S))) \ + OP(L'ș', RALT(Key_S)) \ + OP(L'Ț', RALT(LSHIFT(Key_T))) \ + OP(L'ț', RALT(Key_T)) \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(Key_M)) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Abreve, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gbreve, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Ibreve, LSHIFT(Key_J)) \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, LSHIFT(Key_X)) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abreve, RALT(Key_W)) \ + OP(XKB_KEY_acircumflex, RALT(Key_A)) \ + OP(XKB_KEY_acute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_2)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, RALT(Key_Minus)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_bar, RALT(Key_Equals)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_Period) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_comma, Key_NonUsPound) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Slash)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gbreve, Key_LeftBracket) \ + OP(XKB_KEY_grave, RALT(Key_NonUsPound)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_1)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_Quote) \ + OP(XKB_KEY_iacute, RALT(Key_F)) \ + OP(XKB_KEY_ibreve, Key_J) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_idotless, Key_I) \ + OP(XKB_KEY_j, RALT(Key_J)) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_multiply, RALT(Key_Comma)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_ntilde, Key_X) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, RALT(Key_O)) \ + OP(XKB_KEY_odiaeresis, Key_Comma) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_4)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, Key_Backtick) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, Key_Semicolon) \ + OP(XKB_KEY_section, RALT(Key_P)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_2)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_trademark, RALT(Key_M)) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, RALT(Key_U)) \ + OP(XKB_KEY_udiaeresis, Key_RightBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_Minus) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ro { +namespace crh_dobruja { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace crh_dobruja +} // namespace ro +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ro/ergonomic/keymap.h b/src/kaleidoscope/host_keymap/linux/ro/ergonomic/keymap.h new file mode 100644 index 0000000000..3b2de21168 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ro/ergonomic/keymap.h @@ -0,0 +1,494 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ro +// variant: ergonomic + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', RALT(LSHIFT(Key_K))) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', RALT(LSHIFT(Key_Y))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', RALT(Key_K)) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', RALT(Key_Y)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', RALT(LSHIFT(Key_K))) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', RALT(LSHIFT(Key_Y))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', RALT(Key_K)) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', RALT(Key_Y)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_P)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Comma)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'±', RALT(LSHIFT(Key_Equals))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'»', RALT(Key_Period)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Â', RALT(LSHIFT(Key_A))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Î', LSHIFT(Key_K)) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'â', RALT(Key_A)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'î', Key_K) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ă', LSHIFT(Key_Q)) /* U+0102, XKB_KEY_Abreve, LATIN CAPITAL LETTER A WITH BREVE */ \ + OP(L'ă', Key_Q) /* U+0103, XKB_KEY_abreve, LATIN SMALL LETTER A WITH BREVE */ \ + OP(L'Đ', RALT(LSHIFT(Key_D))) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_D)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ș', LSHIFT(Key_W)) \ + OP(L'ș', Key_W) \ + OP(L'Ț', LSHIFT(Key_Y)) \ + OP(L'ț', Key_Y) \ + OP(L'–', RALT(LSHIFT(Key_Minus))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'”', RALT(Key_RightBracket)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_LeftBracket)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Abreve, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, LSHIFT(Key_K)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abreve, Key_Q) \ + OP(XKB_KEY_acircumflex, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dstroke, RALT(Key_D)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Comma)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, Key_K) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, RALT(Key_K)) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_RightBracket)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_P)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, RALT(Key_W)) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, RALT(Key_Y)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ro { +namespace ergonomic { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ergonomic +} // namespace ro +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ro/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/ro/standard/keymap.h new file mode 100644 index 0000000000..a87fb5f816 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ro/standard/keymap.h @@ -0,0 +1,496 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ro +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_P)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Comma)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'±', RALT(LSHIFT(Key_Equals))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'»', RALT(Key_Period)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Â', RALT(LSHIFT(Key_Q))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ß', RALT(Key_W)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'â', RALT(Key_Q)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ă', RALT(LSHIFT(Key_A))) /* U+0102, XKB_KEY_Abreve, LATIN CAPITAL LETTER A WITH BREVE */ \ + OP(L'ă', RALT(Key_A)) /* U+0103, XKB_KEY_abreve, LATIN SMALL LETTER A WITH BREVE */ \ + OP(L'Đ', RALT(LSHIFT(Key_D))) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_D)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ș', RALT(LSHIFT(Key_S))) \ + OP(L'ș', RALT(Key_S)) \ + OP(L'Ț', RALT(LSHIFT(Key_T))) \ + OP(L'ț', RALT(Key_T)) \ + OP(L'–', RALT(LSHIFT(Key_Minus))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'”', RALT(Key_RightBracket)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_LeftBracket)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Abreve, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abreve, RALT(Key_A)) \ + OP(XKB_KEY_acircumflex, RALT(Key_Q)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dstroke, RALT(Key_D)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Comma)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_RightBracket)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_P)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_W)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ro { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace ro +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ro/std/keymap.h b/src/kaleidoscope/host_keymap/linux/ro/std/keymap.h new file mode 100644 index 0000000000..d7450bd948 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ro/std/keymap.h @@ -0,0 +1,496 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ro +// variant: std + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_P)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(LSHIFT(Key_Comma))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'±', RALT(LSHIFT(Key_Equals))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'»', RALT(LSHIFT(Key_Period))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Â', LSHIFT(Key_NonUsPound)) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Î', LSHIFT(Key_RightBracket)) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'â', Key_NonUsPound) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'î', Key_RightBracket) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ă', LSHIFT(Key_LeftBracket)) /* U+0102, XKB_KEY_Abreve, LATIN CAPITAL LETTER A WITH BREVE */ \ + OP(L'ă', Key_LeftBracket) /* U+0103, XKB_KEY_abreve, LATIN SMALL LETTER A WITH BREVE */ \ + OP(L'Đ', RALT(LSHIFT(Key_D))) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_D)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ș', LSHIFT(Key_Semicolon)) \ + OP(L'ș', Key_Semicolon) \ + OP(L'Ț', LSHIFT(Key_Quote)) \ + OP(L'ț', Key_Quote) \ + OP(L'–', RALT(LSHIFT(Key_Minus))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'”', LSHIFT(Key_Backtick)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', Key_Backtick) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Abreve, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Acircumflex, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abreve, Key_LeftBracket) \ + OP(XKB_KEY_acircumflex, Key_NonUsPound) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_braceright, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, Key_Backtick) \ + OP(XKB_KEY_dstroke, RALT(Key_D)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, Key_RightBracket) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, RALT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rightdoublequotemark, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_P)) \ + OP(XKB_KEY_semicolon, RALT(Key_Semicolon)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ro { +namespace std { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace std +} // namespace ro +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ro/std_cedilla/keymap.h b/src/kaleidoscope/host_keymap/linux/ro/std_cedilla/keymap.h new file mode 100644 index 0000000000..890cc1f433 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ro/std_cedilla/keymap.h @@ -0,0 +1,500 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ro +// variant: std_cedilla + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_P)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(LSHIFT(Key_Comma))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'±', RALT(LSHIFT(Key_Equals))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'»', RALT(LSHIFT(Key_Period))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Â', LSHIFT(Key_NonUsPound)) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Î', LSHIFT(Key_RightBracket)) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'â', Key_NonUsPound) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'î', Key_RightBracket) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ă', LSHIFT(Key_LeftBracket)) /* U+0102, XKB_KEY_Abreve, LATIN CAPITAL LETTER A WITH BREVE */ \ + OP(L'ă', Key_LeftBracket) /* U+0103, XKB_KEY_abreve, LATIN SMALL LETTER A WITH BREVE */ \ + OP(L'Đ', RALT(LSHIFT(Key_D))) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_D)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ş', LSHIFT(Key_Semicolon)) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', Key_Semicolon) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ţ', LSHIFT(Key_Quote)) /* U+0162, XKB_KEY_Tcedilla, LATIN CAPITAL LETTER T WITH CEDILLA */ \ + OP(L'ţ', Key_Quote) /* U+0163, XKB_KEY_tcedilla, LATIN SMALL LETTER T WITH CEDILLA */ \ + OP(L'–', RALT(LSHIFT(Key_Minus))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'”', LSHIFT(Key_Backtick)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', Key_Backtick) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Abreve, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Acircumflex, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tcedilla, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abreve, Key_LeftBracket) \ + OP(XKB_KEY_acircumflex, Key_NonUsPound) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_braceright, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, Key_Backtick) \ + OP(XKB_KEY_dstroke, RALT(Key_D)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, Key_RightBracket) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, RALT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rightdoublequotemark, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, Key_Semicolon) \ + OP(XKB_KEY_section, RALT(Key_P)) \ + OP(XKB_KEY_semicolon, RALT(Key_Semicolon)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_tcedilla, Key_Quote) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ro { +namespace std_cedilla { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace std_cedilla +} // namespace ro +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ro/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/ro/sun_type6/keymap.h new file mode 100644 index 0000000000..04573698ae --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ro/sun_type6/keymap.h @@ -0,0 +1,500 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ro +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsPound))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_P)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Comma)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'±', RALT(LSHIFT(Key_Equals))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'»', RALT(Key_Period)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Â', RALT(LSHIFT(Key_Q))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'ß', RALT(Key_W)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'â', RALT(Key_Q)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ă', RALT(LSHIFT(Key_A))) /* U+0102, XKB_KEY_Abreve, LATIN CAPITAL LETTER A WITH BREVE */ \ + OP(L'ă', RALT(Key_A)) /* U+0103, XKB_KEY_abreve, LATIN SMALL LETTER A WITH BREVE */ \ + OP(L'Đ', RALT(LSHIFT(Key_D))) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_D)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ș', RALT(LSHIFT(Key_S))) \ + OP(L'ș', RALT(Key_S)) \ + OP(L'Ț', RALT(LSHIFT(Key_T))) \ + OP(L'ț', RALT(Key_T)) \ + OP(L'–', RALT(LSHIFT(Key_Minus))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'”', RALT(Key_RightBracket)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_LeftBracket)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Abreve, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abreve, RALT(Key_A)) \ + OP(XKB_KEY_acircumflex, RALT(Key_Q)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dstroke, RALT(Key_D)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Comma)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_RightBracket)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_P)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_W)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ro { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace ro +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ro/winkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/ro/winkeys/keymap.h new file mode 100644 index 0000000000..bc3f27521e --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ro/winkeys/keymap.h @@ -0,0 +1,562 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ro +// variant: winkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Equals) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Backtick) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_Semicolon)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Equals) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Backtick) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_1)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_M)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_5)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Â', LSHIFT(Key_NonUsPound)) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Î', LSHIFT(Key_RightBracket)) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'â', Key_NonUsPound) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'î', Key_RightBracket) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ă', LSHIFT(Key_LeftBracket)) /* U+0102, XKB_KEY_Abreve, LATIN CAPITAL LETTER A WITH BREVE */ \ + OP(L'ă', Key_LeftBracket) /* U+0103, XKB_KEY_abreve, LATIN SMALL LETTER A WITH BREVE */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ş', LSHIFT(Key_Semicolon)) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', Key_Semicolon) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ţ', LSHIFT(Key_Quote)) /* U+0162, XKB_KEY_Tcedilla, LATIN CAPITAL LETTER T WITH CEDILLA */ \ + OP(L'ţ', Key_Quote) /* U+0163, XKB_KEY_tcedilla, LATIN SMALL LETTER T WITH CEDILLA */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Abreve, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Acircumflex, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tcedilla, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abreve, Key_LeftBracket) \ + OP(XKB_KEY_acircumflex, Key_NonUsPound) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Equals) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_1)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, Key_Backtick) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, RALT(Key_5)) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, RALT(Key_Semicolon)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, Key_RightBracket) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, Key_Semicolon) \ + OP(XKB_KEY_section, RALT(Key_M)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_tcedilla, Key_Quote) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ro { +namespace winkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace winkeys +} // namespace ro +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/rs/alternatequotes/keymap.h b/src/kaleidoscope/host_keymap/linux/rs/alternatequotes/keymap.h new file mode 100644 index 0000000000..76f96a6f66 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/rs/alternatequotes/keymap.h @@ -0,0 +1,458 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: rs +// variant: alternatequotes + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_E))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_O)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_D)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_Backtick))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'»', RALT(Key_S)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ђ', LSHIFT(Key_RightBracket)) /* U+0402, XKB_KEY_Serbian_DJE, CYRILLIC CAPITAL LETTER DJE */ \ + OP(L'Ј', LSHIFT(Key_J)) /* U+0408, XKB_KEY_Cyrillic_JE, CYRILLIC CAPITAL LETTER JE */ \ + OP(L'Љ', LSHIFT(Key_Q)) /* U+0409, XKB_KEY_Cyrillic_LJE, CYRILLIC CAPITAL LETTER LJE */ \ + OP(L'Њ', LSHIFT(Key_W)) /* U+040a, XKB_KEY_Cyrillic_NJE, CYRILLIC CAPITAL LETTER NJE */ \ + OP(L'Ћ', LSHIFT(Key_Quote)) /* U+040b, XKB_KEY_Serbian_TSHE, CYRILLIC CAPITAL LETTER TSHE */ \ + OP(L'Џ', LSHIFT(Key_X)) /* U+040f, XKB_KEY_Cyrillic_DZHE, CYRILLIC CAPITAL LETTER DZHE */ \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_V)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_G)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_NonUsPound)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Y)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_I)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_H)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_C)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_Semicolon)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_LeftBracket)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_V) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_G) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_NonUsPound) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Y) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_I) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_H) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_C) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_Semicolon) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_LeftBracket) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'ђ', Key_RightBracket) /* U+0452, XKB_KEY_Serbian_dje, CYRILLIC SMALL LETTER DJE */ \ + OP(L'ј', Key_J) /* U+0458, XKB_KEY_Cyrillic_je, CYRILLIC SMALL LETTER JE */ \ + OP(L'љ', Key_Q) /* U+0459, XKB_KEY_Cyrillic_lje, CYRILLIC SMALL LETTER LJE */ \ + OP(L'њ', Key_W) /* U+045a, XKB_KEY_Cyrillic_nje, CYRILLIC SMALL LETTER NJE */ \ + OP(L'ћ', Key_Quote) /* U+045b, XKB_KEY_Serbian_tshe, CYRILLIC SMALL LETTER TSHE */ \ + OP(L'џ', Key_X) /* U+045f, XKB_KEY_Cyrillic_dzhe, CYRILLIC SMALL LETTER DZHE */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'…', RALT(Key_T)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_DZHE, LSHIFT(Key_X)) /* XKB_KEY_Serbian_DZE, deprecated */ \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_JE, LSHIFT(Key_J)) /* XKB_KEY_Serbian_JE, deprecated */ \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_LJE, LSHIFT(Key_Q)) /* XKB_KEY_Serbian_LJE, deprecated */ \ + OP(XKB_KEY_Cyrillic_NJE, LSHIFT(Key_W)) /* XKB_KEY_Serbian_NJE, deprecated */ \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_dzhe, Key_X) /* XKB_KEY_Serbian_dze, deprecated */ \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_G) \ + OP(XKB_KEY_Cyrillic_ha, Key_H) \ + OP(XKB_KEY_Cyrillic_i, Key_I) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_je, Key_J) /* XKB_KEY_Serbian_je, deprecated */ \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_lje, Key_Q) /* XKB_KEY_Serbian_lje, deprecated */ \ + OP(XKB_KEY_Cyrillic_nje, Key_W) /* XKB_KEY_Serbian_nje, deprecated */ \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_C) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_ve, Key_V) \ + OP(XKB_KEY_Cyrillic_ze, Key_Y) \ + OP(XKB_KEY_Cyrillic_zhe, Key_NonUsPound) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Serbian_DJE, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Serbian_TSHE, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Serbian_dje, Key_RightBracket) \ + OP(XKB_KEY_Serbian_tshe, Key_Quote) \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_doublegrave, RALT(Key_8)) /* XKB_KEY_dead_doublegrave */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_invertedbreve, RALT(Key_0)) /* XKB_KEY_dead_invertedbreve */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Minus)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_degree, RALT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_ellipsis, RALT(Key_T)) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_D)) \ + OP(XKB_KEY_guillemotright, RALT(Key_S)) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_section, RALT(Key_O)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace rs { +namespace alternatequotes { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace alternatequotes +} // namespace rs +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/rs/combiningkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/rs/combiningkeys/keymap.h new file mode 100644 index 0000000000..055836fc04 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/rs/combiningkeys/keymap.h @@ -0,0 +1,463 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: rs +// variant: combiningkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_E))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_O)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(LSHIFT(Key_D))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_Backtick))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'»', RALT(LSHIFT(Key_S))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'̀', RALT(Key_7)) \ + OP(L'́', RALT(Key_9)) \ + OP(L'̂', RALT(Key_3)) \ + OP(L'̄', RALT(Key_Minus)) \ + OP(L'̏', RALT(Key_8)) \ + OP(L'̑', RALT(Key_0)) \ + OP(L'Ђ', LSHIFT(Key_RightBracket)) /* U+0402, XKB_KEY_Serbian_DJE, CYRILLIC CAPITAL LETTER DJE */ \ + OP(L'Ј', LSHIFT(Key_J)) /* U+0408, XKB_KEY_Cyrillic_JE, CYRILLIC CAPITAL LETTER JE */ \ + OP(L'Љ', LSHIFT(Key_Q)) /* U+0409, XKB_KEY_Cyrillic_LJE, CYRILLIC CAPITAL LETTER LJE */ \ + OP(L'Њ', LSHIFT(Key_W)) /* U+040a, XKB_KEY_Cyrillic_NJE, CYRILLIC CAPITAL LETTER NJE */ \ + OP(L'Ћ', LSHIFT(Key_Quote)) /* U+040b, XKB_KEY_Serbian_TSHE, CYRILLIC CAPITAL LETTER TSHE */ \ + OP(L'Џ', LSHIFT(Key_X)) /* U+040f, XKB_KEY_Cyrillic_DZHE, CYRILLIC CAPITAL LETTER DZHE */ \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_V)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_G)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_NonUsPound)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Y)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_I)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_H)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_C)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_Semicolon)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_LeftBracket)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_V) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_G) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_NonUsPound) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Y) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_I) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_H) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_C) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_Semicolon) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_LeftBracket) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'ђ', Key_RightBracket) /* U+0452, XKB_KEY_Serbian_dje, CYRILLIC SMALL LETTER DJE */ \ + OP(L'ј', Key_J) /* U+0458, XKB_KEY_Cyrillic_je, CYRILLIC SMALL LETTER JE */ \ + OP(L'љ', Key_Q) /* U+0459, XKB_KEY_Cyrillic_lje, CYRILLIC SMALL LETTER LJE */ \ + OP(L'њ', Key_W) /* U+045a, XKB_KEY_Cyrillic_nje, CYRILLIC SMALL LETTER NJE */ \ + OP(L'ћ', Key_Quote) /* U+045b, XKB_KEY_Serbian_tshe, CYRILLIC SMALL LETTER TSHE */ \ + OP(L'џ', Key_X) /* U+045f, XKB_KEY_Cyrillic_dzhe, CYRILLIC SMALL LETTER DZHE */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_D)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_S)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_T)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_DZHE, LSHIFT(Key_X)) /* XKB_KEY_Serbian_DZE, deprecated */ \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_JE, LSHIFT(Key_J)) /* XKB_KEY_Serbian_JE, deprecated */ \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_LJE, LSHIFT(Key_Q)) /* XKB_KEY_Serbian_LJE, deprecated */ \ + OP(XKB_KEY_Cyrillic_NJE, LSHIFT(Key_W)) /* XKB_KEY_Serbian_NJE, deprecated */ \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_dzhe, Key_X) /* XKB_KEY_Serbian_dze, deprecated */ \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_G) \ + OP(XKB_KEY_Cyrillic_ha, Key_H) \ + OP(XKB_KEY_Cyrillic_i, Key_I) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_je, Key_J) /* XKB_KEY_Serbian_je, deprecated */ \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_lje, Key_Q) /* XKB_KEY_Serbian_lje, deprecated */ \ + OP(XKB_KEY_Cyrillic_nje, Key_W) /* XKB_KEY_Serbian_nje, deprecated */ \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_C) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_ve, Key_V) \ + OP(XKB_KEY_Cyrillic_ze, Key_Y) \ + OP(XKB_KEY_Cyrillic_zhe, Key_NonUsPound) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Serbian_DJE, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Serbian_TSHE, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Serbian_dje, Key_RightBracket) \ + OP(XKB_KEY_Serbian_tshe, Key_Quote) \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_degree, RALT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_S)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_ellipsis, RALT(Key_T)) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_D)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_section, RALT(Key_O)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace rs { +namespace combiningkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace combiningkeys +} // namespace rs +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/rs/latin/keymap.h b/src/kaleidoscope/host_keymap/linux/rs/latin/keymap.h new file mode 100644 index 0000000000..b359a3e8d8 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/rs/latin/keymap.h @@ -0,0 +1,571 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: rs +// variant: latin + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(LSHIFT(Key_D))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_S))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ć', LSHIFT(Key_Quote)) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', Key_Quote) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', LSHIFT(Key_Semicolon)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Semicolon) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_RightBracket)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_RightBracket) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Š', LSHIFT(Key_LeftBracket)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_LeftBracket) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ž', LSHIFT(Key_NonUsPound)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_NonUsPound) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_D)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_S)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, Key_Quote) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ccaron, Key_Semicolon) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_S)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_D)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_LeftBracket) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + OP(XKB_KEY_zcaron, Key_NonUsPound) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace rs { +namespace latin { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace latin +} // namespace rs +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/rs/latinalternatequotes/keymap.h b/src/kaleidoscope/host_keymap/linux/rs/latinalternatequotes/keymap.h new file mode 100644 index 0000000000..e8176d0b85 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/rs/latinalternatequotes/keymap.h @@ -0,0 +1,567 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: rs +// variant: latinalternatequotes + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_D)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_S)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ć', LSHIFT(Key_Quote)) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', Key_Quote) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', LSHIFT(Key_Semicolon)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Semicolon) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_RightBracket)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_RightBracket) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Š', LSHIFT(Key_LeftBracket)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_LeftBracket) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ž', LSHIFT(Key_NonUsPound)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_NonUsPound) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, Key_Quote) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ccaron, Key_Semicolon) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_D)) \ + OP(XKB_KEY_guillemotright, RALT(Key_S)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_LeftBracket) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + OP(XKB_KEY_zcaron, Key_NonUsPound) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace rs { +namespace latinalternatequotes { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace latinalternatequotes +} // namespace rs +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/rs/latinunicode/keymap.h b/src/kaleidoscope/host_keymap/linux/rs/latinunicode/keymap.h new file mode 100644 index 0000000000..61dfe88993 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/rs/latinunicode/keymap.h @@ -0,0 +1,554 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: rs +// variant: latinunicode + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(LSHIFT(Key_D))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_S))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ć', LSHIFT(Key_Quote)) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', Key_Quote) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', LSHIFT(Key_Semicolon)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Semicolon) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_RightBracket)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_RightBracket) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Š', LSHIFT(Key_LeftBracket)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_LeftBracket) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ž', LSHIFT(Key_NonUsPound)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_NonUsPound) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'DŽ', RALT(LSHIFT(Key_X))) \ + OP(L'Dž', LSHIFT(Key_X)) \ + OP(L'dž', Key_X) \ + OP(L'LJ', RALT(LSHIFT(Key_Q))) \ + OP(L'Lj', LSHIFT(Key_Q)) \ + OP(L'lj', Key_Q) \ + OP(L'NJ', RALT(LSHIFT(Key_W))) \ + OP(L'Nj', LSHIFT(Key_W)) \ + OP(L'nj', Key_W) \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_D)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_S)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, Key_Quote) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ccaron, Key_Semicolon) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_S)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_D)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_LeftBracket) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + OP(XKB_KEY_zcaron, Key_NonUsPound) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace rs { +namespace latinunicode { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace latinunicode +} // namespace rs +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/rs/latinunicodeyz/keymap.h b/src/kaleidoscope/host_keymap/linux/rs/latinunicodeyz/keymap.h new file mode 100644 index 0000000000..3f0ab6aae9 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/rs/latinunicodeyz/keymap.h @@ -0,0 +1,554 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: rs +// variant: latinunicodeyz + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(LSHIFT(Key_D))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_S))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ć', LSHIFT(Key_Quote)) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', Key_Quote) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', LSHIFT(Key_Semicolon)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Semicolon) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_RightBracket)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_RightBracket) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Š', LSHIFT(Key_LeftBracket)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_LeftBracket) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ž', LSHIFT(Key_Y)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_Y) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'DŽ', RALT(LSHIFT(Key_X))) \ + OP(L'Dž', LSHIFT(Key_X)) \ + OP(L'dž', Key_X) \ + OP(L'LJ', RALT(LSHIFT(Key_Q))) \ + OP(L'Lj', LSHIFT(Key_Q)) \ + OP(L'lj', Key_Q) \ + OP(L'NJ', RALT(LSHIFT(Key_W))) \ + OP(L'Nj', LSHIFT(Key_W)) \ + OP(L'nj', Key_W) \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_D)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_S)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, Key_Quote) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ccaron, Key_Semicolon) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_S)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_D)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_LeftBracket) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, Key_Y) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace rs { +namespace latinunicodeyz { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace latinunicodeyz +} // namespace rs +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/rs/latinyz/keymap.h b/src/kaleidoscope/host_keymap/linux/rs/latinyz/keymap.h new file mode 100644 index 0000000000..3022912736 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/rs/latinyz/keymap.h @@ -0,0 +1,571 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: rs +// variant: latinyz + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¨', RALT(LSHIFT(Key_Minus))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(LSHIFT(Key_D))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', RALT(LSHIFT(Key_Equals))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_S))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ć', LSHIFT(Key_Quote)) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', Key_Quote) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', LSHIFT(Key_Semicolon)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Semicolon) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_RightBracket)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_RightBracket) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Š', LSHIFT(Key_LeftBracket)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_LeftBracket) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ž', LSHIFT(Key_NonUsPound)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_NonUsPound) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_D)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_S)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, Key_Quote) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ccaron, Key_Semicolon) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_S)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_D)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_LeftBracket) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, Key_NonUsPound) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace rs { +namespace latinyz { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace latinyz +} // namespace rs +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/rs/rue/keymap.h b/src/kaleidoscope/host_keymap/linux/rs/rue/keymap.h new file mode 100644 index 0000000000..4a57316218 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/rs/rue/keymap.h @@ -0,0 +1,464 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: rs +// variant: rue + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_E))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_O)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(LSHIFT(Key_D))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_Backtick))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'»', RALT(LSHIFT(Key_S))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Є', LSHIFT(Key_W)) /* U+0404, XKB_KEY_Ukrainian_IE, CYRILLIC CAPITAL LETTER UKRAINIAN IE */ \ + OP(L'Ї', LSHIFT(Key_X)) /* U+0407, XKB_KEY_Ukrainian_YI, CYRILLIC CAPITAL LETTER YI */ \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_V)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_Quote)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_NonUsPound)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Y)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_I)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_J)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_H)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_C)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_Semicolon)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_LeftBracket)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_RightBracket)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ь', LSHIFT(Key_Backtick)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Ю', LSHIFT(Key_Z)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Q)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_V) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_Quote) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_NonUsPound) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Y) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_I) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_J) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_H) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_C) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_Semicolon) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_LeftBracket) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_RightBracket) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ь', Key_Backtick) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'ю', Key_Z) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Q) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'є', Key_W) /* U+0454, XKB_KEY_Ukrainian_ie, CYRILLIC SMALL LETTER UKRAINIAN IE */ \ + OP(L'ї', Key_X) /* U+0457, XKB_KEY_Ukrainian_yi, CYRILLIC SMALL LETTER YI */ \ + OP(L'Ґ', LSHIFT(Key_G)) /* U+0490, XKB_KEY_Ukrainian_GHE_WITH_UPTURN, CYRILLIC CAPITAL LETTER GHE WITH UPTURN */ \ + OP(L'ґ', Key_G) /* U+0491, XKB_KEY_Ukrainian_ghe_with_upturn, CYRILLIC SMALL LETTER GHE WITH UPTURN */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_D)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_S)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_T)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ha, Key_H) \ + OP(XKB_KEY_Cyrillic_i, Key_I) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_shcha, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_shorti, Key_J) \ + OP(XKB_KEY_Cyrillic_softsign, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_C) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_ve, Key_V) \ + OP(XKB_KEY_Cyrillic_ya, Key_Q) \ + OP(XKB_KEY_Cyrillic_yu, Key_Z) \ + OP(XKB_KEY_Cyrillic_ze, Key_Y) \ + OP(XKB_KEY_Cyrillic_zhe, Key_NonUsPound) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Ukrainian_GHE_WITH_UPTURN, LSHIFT(Key_G)) \ + OP(XKB_KEY_Ukrainian_IE, LSHIFT(Key_W)) /* XKB_KEY_Ukranian_JE, deprecated */ \ + OP(XKB_KEY_Ukrainian_YI, LSHIFT(Key_X)) /* XKB_KEY_Ukranian_YI, deprecated */ \ + OP(XKB_KEY_Ukrainian_ghe_with_upturn, Key_G) \ + OP(XKB_KEY_Ukrainian_ie, Key_W) /* XKB_KEY_Ukranian_je, deprecated */ \ + OP(XKB_KEY_Ukrainian_yi, Key_X) /* XKB_KEY_Ukranian_yi, deprecated */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_doublegrave, RALT(Key_8)) /* XKB_KEY_dead_doublegrave */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_invertedbreve, RALT(Key_0)) /* XKB_KEY_dead_invertedbreve */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Minus)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_degree, RALT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_S)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_ellipsis, RALT(Key_T)) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_D)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_section, RALT(Key_O)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace rs { +namespace rue { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace rue +} // namespace rs +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/rs/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/rs/standard/keymap.h new file mode 100644 index 0000000000..01acb44bad --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/rs/standard/keymap.h @@ -0,0 +1,462 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: rs +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_E))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_O)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(LSHIFT(Key_D))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_Backtick))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'»', RALT(LSHIFT(Key_S))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ђ', LSHIFT(Key_RightBracket)) /* U+0402, XKB_KEY_Serbian_DJE, CYRILLIC CAPITAL LETTER DJE */ \ + OP(L'Ј', LSHIFT(Key_J)) /* U+0408, XKB_KEY_Cyrillic_JE, CYRILLIC CAPITAL LETTER JE */ \ + OP(L'Љ', LSHIFT(Key_Q)) /* U+0409, XKB_KEY_Cyrillic_LJE, CYRILLIC CAPITAL LETTER LJE */ \ + OP(L'Њ', LSHIFT(Key_W)) /* U+040a, XKB_KEY_Cyrillic_NJE, CYRILLIC CAPITAL LETTER NJE */ \ + OP(L'Ћ', LSHIFT(Key_Quote)) /* U+040b, XKB_KEY_Serbian_TSHE, CYRILLIC CAPITAL LETTER TSHE */ \ + OP(L'Џ', LSHIFT(Key_X)) /* U+040f, XKB_KEY_Cyrillic_DZHE, CYRILLIC CAPITAL LETTER DZHE */ \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_V)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_G)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_NonUsPound)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Y)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_I)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_H)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_C)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_Semicolon)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_LeftBracket)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_V) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_G) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_NonUsPound) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Y) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_I) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_H) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_C) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_Semicolon) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_LeftBracket) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'ђ', Key_RightBracket) /* U+0452, XKB_KEY_Serbian_dje, CYRILLIC SMALL LETTER DJE */ \ + OP(L'ј', Key_J) /* U+0458, XKB_KEY_Cyrillic_je, CYRILLIC SMALL LETTER JE */ \ + OP(L'љ', Key_Q) /* U+0459, XKB_KEY_Cyrillic_lje, CYRILLIC SMALL LETTER LJE */ \ + OP(L'њ', Key_W) /* U+045a, XKB_KEY_Cyrillic_nje, CYRILLIC SMALL LETTER NJE */ \ + OP(L'ћ', Key_Quote) /* U+045b, XKB_KEY_Serbian_tshe, CYRILLIC SMALL LETTER TSHE */ \ + OP(L'џ', Key_X) /* U+045f, XKB_KEY_Cyrillic_dzhe, CYRILLIC SMALL LETTER DZHE */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_D)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_S)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_T)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_DZHE, LSHIFT(Key_X)) /* XKB_KEY_Serbian_DZE, deprecated */ \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_JE, LSHIFT(Key_J)) /* XKB_KEY_Serbian_JE, deprecated */ \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_LJE, LSHIFT(Key_Q)) /* XKB_KEY_Serbian_LJE, deprecated */ \ + OP(XKB_KEY_Cyrillic_NJE, LSHIFT(Key_W)) /* XKB_KEY_Serbian_NJE, deprecated */ \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_dzhe, Key_X) /* XKB_KEY_Serbian_dze, deprecated */ \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_G) \ + OP(XKB_KEY_Cyrillic_ha, Key_H) \ + OP(XKB_KEY_Cyrillic_i, Key_I) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_je, Key_J) /* XKB_KEY_Serbian_je, deprecated */ \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_lje, Key_Q) /* XKB_KEY_Serbian_lje, deprecated */ \ + OP(XKB_KEY_Cyrillic_nje, Key_W) /* XKB_KEY_Serbian_nje, deprecated */ \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_C) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_ve, Key_V) \ + OP(XKB_KEY_Cyrillic_ze, Key_Y) \ + OP(XKB_KEY_Cyrillic_zhe, Key_NonUsPound) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Serbian_DJE, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Serbian_TSHE, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Serbian_dje, Key_RightBracket) \ + OP(XKB_KEY_Serbian_tshe, Key_Quote) \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_doublegrave, RALT(Key_8)) /* XKB_KEY_dead_doublegrave */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_invertedbreve, RALT(Key_0)) /* XKB_KEY_dead_invertedbreve */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Minus)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_degree, RALT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_S)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_ellipsis, RALT(Key_T)) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_D)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_section, RALT(Key_O)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace rs { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace rs +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/rs/yz/keymap.h b/src/kaleidoscope/host_keymap/linux/rs/yz/keymap.h new file mode 100644 index 0000000000..846aa6faa6 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/rs/yz/keymap.h @@ -0,0 +1,462 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: rs +// variant: yz + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_E))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_O)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(LSHIFT(Key_D))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_Backtick))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'»', RALT(LSHIFT(Key_S))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ђ', LSHIFT(Key_RightBracket)) /* U+0402, XKB_KEY_Serbian_DJE, CYRILLIC CAPITAL LETTER DJE */ \ + OP(L'Ј', LSHIFT(Key_J)) /* U+0408, XKB_KEY_Cyrillic_JE, CYRILLIC CAPITAL LETTER JE */ \ + OP(L'Љ', LSHIFT(Key_Q)) /* U+0409, XKB_KEY_Cyrillic_LJE, CYRILLIC CAPITAL LETTER LJE */ \ + OP(L'Њ', LSHIFT(Key_W)) /* U+040a, XKB_KEY_Cyrillic_NJE, CYRILLIC CAPITAL LETTER NJE */ \ + OP(L'Ћ', LSHIFT(Key_Quote)) /* U+040b, XKB_KEY_Serbian_TSHE, CYRILLIC CAPITAL LETTER TSHE */ \ + OP(L'Џ', LSHIFT(Key_X)) /* U+040f, XKB_KEY_Cyrillic_DZHE, CYRILLIC CAPITAL LETTER DZHE */ \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_V)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_G)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Y)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Z)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_I)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_H)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_C)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_Semicolon)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_LeftBracket)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_V) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_G) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Y) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Z) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_I) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_H) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_C) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_Semicolon) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_LeftBracket) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'ђ', Key_RightBracket) /* U+0452, XKB_KEY_Serbian_dje, CYRILLIC SMALL LETTER DJE */ \ + OP(L'ј', Key_J) /* U+0458, XKB_KEY_Cyrillic_je, CYRILLIC SMALL LETTER JE */ \ + OP(L'љ', Key_Q) /* U+0459, XKB_KEY_Cyrillic_lje, CYRILLIC SMALL LETTER LJE */ \ + OP(L'њ', Key_W) /* U+045a, XKB_KEY_Cyrillic_nje, CYRILLIC SMALL LETTER NJE */ \ + OP(L'ћ', Key_Quote) /* U+045b, XKB_KEY_Serbian_tshe, CYRILLIC SMALL LETTER TSHE */ \ + OP(L'џ', Key_X) /* U+045f, XKB_KEY_Cyrillic_dzhe, CYRILLIC SMALL LETTER DZHE */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_D)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_S)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'…', RALT(Key_T)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_DZHE, LSHIFT(Key_X)) /* XKB_KEY_Serbian_DZE, deprecated */ \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_JE, LSHIFT(Key_J)) /* XKB_KEY_Serbian_JE, deprecated */ \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_LJE, LSHIFT(Key_Q)) /* XKB_KEY_Serbian_LJE, deprecated */ \ + OP(XKB_KEY_Cyrillic_NJE, LSHIFT(Key_W)) /* XKB_KEY_Serbian_NJE, deprecated */ \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_dzhe, Key_X) /* XKB_KEY_Serbian_dze, deprecated */ \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_G) \ + OP(XKB_KEY_Cyrillic_ha, Key_H) \ + OP(XKB_KEY_Cyrillic_i, Key_I) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_je, Key_J) /* XKB_KEY_Serbian_je, deprecated */ \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_lje, Key_Q) /* XKB_KEY_Serbian_lje, deprecated */ \ + OP(XKB_KEY_Cyrillic_nje, Key_W) /* XKB_KEY_Serbian_nje, deprecated */ \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_C) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_ve, Key_V) \ + OP(XKB_KEY_Cyrillic_ze, Key_Z) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Y) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Serbian_DJE, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Serbian_TSHE, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Serbian_dje, Key_RightBracket) \ + OP(XKB_KEY_Serbian_tshe, Key_Quote) \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_doublegrave, RALT(Key_8)) /* XKB_KEY_dead_doublegrave */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_invertedbreve, RALT(Key_0)) /* XKB_KEY_dead_invertedbreve */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Minus)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_degree, RALT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_S)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_ellipsis, RALT(Key_T)) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_D)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_section, RALT(Key_O)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace rs { +namespace yz { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace yz +} // namespace rs +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/bak/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/bak/keymap.h new file mode 100644 index 0000000000..8c9e8f0010 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/bak/keymap.h @@ -0,0 +1,405 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: bak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_1) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_1)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', LSHIFT(Key_Minus)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_6) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_6)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', RALT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', Key_9) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', RALT(LSHIFT(Key_Minus))) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_1) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_1)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', LSHIFT(Key_Minus)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_6) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_6)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', RALT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', Key_9) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', RALT(LSHIFT(Key_Minus))) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ё', RALT(LSHIFT(Key_Backtick))) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', RALT(Key_Backtick)) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'Ғ', LSHIFT(Key_4)) /* U+0492, XKB_KEY_Cyrillic_GHE_bar, CYRILLIC CAPITAL LETTER GHE WITH STROKE */ \ + OP(L'ғ', Key_4) /* U+0493, XKB_KEY_Cyrillic_ghe_bar, CYRILLIC SMALL LETTER GHE WITH STROKE */ \ + OP(L'Ҙ', LSHIFT(Key_7)) \ + OP(L'ҙ', Key_7) \ + OP(L'Ҡ', LSHIFT(Key_3)) \ + OP(L'ҡ', Key_3) \ + OP(L'Ң', LSHIFT(Key_NonUsPound)) /* U+04a2, XKB_KEY_Cyrillic_EN_descender, CYRILLIC CAPITAL LETTER EN WITH DESCENDER */ \ + OP(L'ң', Key_NonUsPound) /* U+04a3, XKB_KEY_Cyrillic_en_descender, CYRILLIC SMALL LETTER EN WITH DESCENDER */ \ + OP(L'Ҫ', LSHIFT(Key_5)) \ + OP(L'ҫ', Key_5) \ + OP(L'Ү', LSHIFT(Key_Equals)) /* U+04ae, XKB_KEY_Cyrillic_U_straight, CYRILLIC CAPITAL LETTER STRAIGHT U */ \ + OP(L'ү', Key_Equals) /* U+04af, XKB_KEY_Cyrillic_u_straight, CYRILLIC SMALL LETTER STRAIGHT U */ \ + OP(L'Һ', LSHIFT(Key_8)) /* U+04ba, XKB_KEY_Cyrillic_SHHA, CYRILLIC CAPITAL LETTER SHHA */ \ + OP(L'һ', Key_8) /* U+04bb, XKB_KEY_Cyrillic_shha, CYRILLIC SMALL LETTER SHHA */ \ + OP(L'Ә', LSHIFT(Key_Backtick)) /* U+04d8, XKB_KEY_Cyrillic_SCHWA, CYRILLIC CAPITAL LETTER SCHWA */ \ + OP(L'ә', Key_Backtick) /* U+04d9, XKB_KEY_Cyrillic_schwa, CYRILLIC SMALL LETTER SCHWA */ \ + OP(L'Ө', LSHIFT(Key_2)) /* U+04e8, XKB_KEY_Cyrillic_O_bar, CYRILLIC CAPITAL LETTER BARRED O */ \ + OP(L'ө', Key_2) /* U+04e9, XKB_KEY_Cyrillic_o_bar, CYRILLIC SMALL LETTER BARRED O */ \ + OP(L'№', Key_0) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_0)) \ + OP(XKB_KEY_1, RALT(Key_1)) \ + OP(XKB_KEY_2, RALT(Key_2)) \ + OP(XKB_KEY_3, RALT(Key_3)) \ + OP(XKB_KEY_4, RALT(Key_4)) \ + OP(XKB_KEY_5, RALT(Key_5)) \ + OP(XKB_KEY_6, RALT(Key_6)) \ + OP(XKB_KEY_7, RALT(Key_7)) \ + OP(XKB_KEY_8, RALT(Key_8)) \ + OP(XKB_KEY_9, RALT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_EN_descender, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_GHE_bar, LSHIFT(Key_4)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_O_bar, LSHIFT(Key_2)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SCHWA, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHHA, LSHIFT(Key_8)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_U_straight, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_en_descender, Key_NonUsPound) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ghe_bar, Key_4) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, RALT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_o_bar, Key_2) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_schwa, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shha, Key_8) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_u_straight, Key_Equals) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_backslash, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, Key_6) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_equal, RALT(Key_Equals)) \ + OP(XKB_KEY_exclam, Key_1) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numerosign, Key_0) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_question, Key_9) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_1)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_6)) \ + OP(XKB_KEY_slash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, RALT(LSHIFT(Key_Minus))) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace bak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace bak +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/chm/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/chm/keymap.h new file mode 100644 index 0000000000..b077a98ace --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/chm/keymap.h @@ -0,0 +1,387 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: chm + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ё', LSHIFT(Key_Backtick)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Backtick) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'Ҥ', RALT(LSHIFT(Key_Y))) \ + OP(L'ҥ', RALT(Key_Y)) \ + OP(L'Ӓ', RALT(LSHIFT(Key_F))) \ + OP(L'ӓ', RALT(Key_F)) \ + OP(L'Ӧ', RALT(LSHIFT(Key_J))) \ + OP(L'ӧ', RALT(Key_J)) \ + OP(L'Ӱ', RALT(LSHIFT(Key_E))) \ + OP(L'ӱ', RALT(Key_E)) \ + OP(L'Ӹ', RALT(LSHIFT(Key_S))) \ + OP(L'ӹ', RALT(Key_S)) \ + OP(L'₽', RALT(Key_8)) \ + OP(L'№', LSHIFT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_6)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_7)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_4)) \ + OP(XKB_KEY_slash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace chm { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace chm +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/chu/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/chu/keymap.h new file mode 100644 index 0000000000..35989a89c1 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/chu/keymap.h @@ -0,0 +1,351 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: chu + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'̀', LSHIFT(Key_Equals)) \ + OP(L'́', Key_Equals) \ + OP(L'Є', LSHIFT(Key_2)) \ + OP(L'Ѕ', LSHIFT(Key_9)) \ + OP(L'Ї', LSHIFT(Key_Backtick)) \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_0)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_0) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'є', Key_2) \ + OP(L'ѕ', Key_9) \ + OP(L'ї', Key_Backtick) \ + OP(L'Ѡ', LSHIFT(Key_1)) \ + OP(L'ѡ', Key_1) \ + OP(L'Ѣ', LSHIFT(Key_Quote)) \ + OP(L'ѣ', Key_Quote) \ + OP(L'Ѧ', LSHIFT(Key_Z)) \ + OP(L'ѧ', Key_Z) \ + OP(L'Ѯ', LSHIFT(Key_3)) \ + OP(L'ѯ', Key_3) \ + OP(L'Ѱ', LSHIFT(Key_4)) \ + OP(L'ѱ', Key_4) \ + OP(L'Ѳ', LSHIFT(Key_5)) \ + OP(L'ѳ', Key_5) \ + OP(L'Ѵ', LSHIFT(Key_6)) \ + OP(L'ѵ', Key_6) \ + OP(L'Ѻ', LSHIFT(Key_7)) \ + OP(L'ѻ', Key_7) \ + OP(L'Ѿ', LSHIFT(Key_8)) \ + OP(L'ѿ', Key_8) \ + OP(L'҃', Key_Minus) \ + OP(L'҆', LSHIFT(Key_Minus)) \ + OP(L'Ꙋ', LSHIFT(Key_E)) \ + OP(L'ꙋ', Key_E) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_0)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_0) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_slash, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace chu { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace chu +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/cv/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/cv/keymap.h new file mode 100644 index 0000000000..14a2f636ff --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/cv/keymap.h @@ -0,0 +1,385 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: cv + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ё', LSHIFT(Key_Backtick)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Backtick) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'Ҫ', RALT(LSHIFT(Key_C))) \ + OP(L'ҫ', RALT(Key_C)) \ + OP(L'Ӑ', RALT(LSHIFT(Key_F))) \ + OP(L'ӑ', RALT(Key_F)) \ + OP(L'Ӗ', RALT(LSHIFT(Key_T))) \ + OP(L'ӗ', RALT(Key_T)) \ + OP(L'Ӳ', RALT(LSHIFT(Key_E))) \ + OP(L'ӳ', RALT(Key_E)) \ + OP(L'₽', RALT(Key_8)) \ + OP(L'№', LSHIFT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_6)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_7)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_4)) \ + OP(XKB_KEY_slash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace cv { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace cv +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/cv_latin/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/cv_latin/keymap.h new file mode 100644 index 0000000000..75fb6cafd1 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/cv_latin/keymap.h @@ -0,0 +1,494 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: cv_latin + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ö', RALT(LSHIFT(Key_O))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'Ü', RALT(LSHIFT(Key_W))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ö', RALT(Key_O)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ü', RALT(Key_W)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Ă', RALT(LSHIFT(Key_A))) /* U+0102, XKB_KEY_Abreve, LATIN CAPITAL LETTER A WITH BREVE */ \ + OP(L'ă', RALT(Key_A)) /* U+0103, XKB_KEY_abreve, LATIN SMALL LETTER A WITH BREVE */ \ + OP(L'Ĕ', RALT(LSHIFT(Key_E))) \ + OP(L'ĕ', RALT(Key_E)) \ + OP(L'Ğ', RALT(LSHIFT(Key_G))) /* U+011e, XKB_KEY_Gbreve, LATIN CAPITAL LETTER G WITH BREVE */ \ + OP(L'ğ', RALT(Key_G)) /* U+011f, XKB_KEY_gbreve, LATIN SMALL LETTER G WITH BREVE */ \ + OP(L'Ĭ', RALT(LSHIFT(Key_I))) /* U+012c, XKB_KEY_Ibreve, LATIN CAPITAL LETTER I WITH BREVE */ \ + OP(L'ĭ', RALT(Key_I)) /* U+012d, XKB_KEY_ibreve, LATIN SMALL LETTER I WITH BREVE */ \ + OP(L'İ', RALT(LSHIFT(Key_J))) \ + OP(L'ı', RALT(Key_J)) \ + OP(L'Ş', RALT(LSHIFT(Key_S))) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', RALT(Key_S)) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Š', RALT(LSHIFT(Key_Q))) \ + OP(L'š', RALT(Key_Q)) \ + OP(L'‘', RALT(Key_9)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_0)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Abreve, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gbreve, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Ibreve, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abreve, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Period)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(LSHIFT(Key_Minus))) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_9))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Comma))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Comma)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_Quote)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_Equals)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_Backtick) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_Slash)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Minus)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_Semicolon)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gbreve, RALT(Key_G)) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_ibreve, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_9)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_0)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, RALT(Key_W)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace cv_latin { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace cv_latin +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/dos/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/dos/keymap.h new file mode 100644 index 0000000000..a5371fb9b5 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/dos/keymap.h @@ -0,0 +1,377 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: dos + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('%', LSHIFT(Key_0)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', LSHIFT(Key_Backtick)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Backtick) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_6)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_7)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_5)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_8)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_9)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'%', LSHIFT(Key_0)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', LSHIFT(Key_Backtick)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Backtick) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_6)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_7)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_5)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_8)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_9)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'Ё', LSHIFT(Key_Slash)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Slash) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, Key_Slash) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_colon, LSHIFT(Key_5)) \ + OP(XKB_KEY_comma, LSHIFT(Key_6)) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_parenright, Key_Backtick) \ + OP(XKB_KEY_percent, LSHIFT(Key_0)) \ + OP(XKB_KEY_period, LSHIFT(Key_7)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_9)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_8)) \ + OP(XKB_KEY_slash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace dos { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dos +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/kom/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/kom/keymap.h new file mode 100644 index 0000000000..17952c75de --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/kom/keymap.h @@ -0,0 +1,383 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: kom + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ё', LSHIFT(Key_Backtick)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'І', RALT(LSHIFT(Key_B))) /* U+0406, XKB_KEY_Ukrainian_I, CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Backtick) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'і', RALT(Key_B)) /* U+0456, XKB_KEY_Ukrainian_i, CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'Ӧ', RALT(LSHIFT(Key_J))) \ + OP(L'ӧ', RALT(Key_J)) \ + OP(L'₽', RALT(Key_8)) \ + OP(L'№', LSHIFT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Ukrainian_I, RALT(LSHIFT(Key_B))) /* XKB_KEY_Ukranian_I, deprecated */ \ + OP(XKB_KEY_Ukrainian_i, RALT(Key_B)) /* XKB_KEY_Ukranian_i, deprecated */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_6)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_7)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_4)) \ + OP(XKB_KEY_slash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace kom { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace kom +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/legacy/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/legacy/keymap.h new file mode 100644 index 0000000000..ba45c1af0a --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/legacy/keymap.h @@ -0,0 +1,373 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: legacy + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_6)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_7)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_5)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_8)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_6)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_7)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_5)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_8)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Ё', LSHIFT(Key_Backtick)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Backtick) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_4)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_colon, LSHIFT(Key_5)) \ + OP(XKB_KEY_comma, LSHIFT(Key_6)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_period, LSHIFT(Key_7)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_8)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace legacy { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace legacy +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/mac/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/mac/keymap.h new file mode 100644 index 0000000000..dc1de067b2 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/mac/keymap.h @@ -0,0 +1,385 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: mac + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', LSHIFT(Key_4)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_6)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_7)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_5)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_8)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('[', LSHIFT(Key_Backtick)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(']', Key_Backtick) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', LSHIFT(Key_4)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_6)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_7)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_5)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_8)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'[', LSHIFT(Key_Backtick)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L']', Key_Backtick) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ё', LSHIFT(Key_NonUsPound)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_NonUsPound) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'₽', RALT(Key_H)) \ + OP(L'№', LSHIFT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, Key_NonUsPound) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_bracketright, Key_Backtick) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_5)) \ + OP(XKB_KEY_comma, LSHIFT(Key_6)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_4)) \ + OP(XKB_KEY_period, LSHIFT(Key_7)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_8)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace mac { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mac +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/os_legacy/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/os_legacy/keymap.h new file mode 100644 index 0000000000..d789e7c1be --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/os_legacy/keymap.h @@ -0,0 +1,371 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: os_legacy + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_6)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_7)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_5)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_8)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_6)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_7)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_5)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_8)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Backtick)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Backtick) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'Ӕ', LSHIFT(Key_Quote)) \ + OP(L'ӕ', Key_Quote) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_4)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_colon, LSHIFT(Key_5)) \ + OP(XKB_KEY_comma, LSHIFT(Key_6)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_period, LSHIFT(Key_7)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_8)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace os_legacy { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace os_legacy +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/os_winkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/os_winkeys/keymap.h new file mode 100644 index 0000000000..75b13e7134 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/os_winkeys/keymap.h @@ -0,0 +1,373 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: os_winkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Backtick)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Backtick) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'Ӕ', LSHIFT(Key_Quote)) \ + OP(L'ӕ', Key_Quote) \ + OP(L'№', LSHIFT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, LSHIFT(Key_6)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_7)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_4)) \ + OP(XKB_KEY_slash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace os_winkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace os_winkeys +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/phonetic/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/phonetic/keymap.h new file mode 100644 index 0000000000..b97d5d997e --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/phonetic/keymap.h @@ -0,0 +1,380 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: phonetic + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ё', LSHIFT(Key_4)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_W)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_G)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_V)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Z)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_I)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_J)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_H)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_C)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_Equals)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_LeftBracket)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_RightBracket)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_6)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_Y)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_X)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_NonUsPound)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Backtick)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Q)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_W) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_G) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_V) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Z) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_I) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_J) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_H) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_C) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_Equals) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_LeftBracket) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_RightBracket) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', LSHIFT(Key_5)) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_Y) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_X) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_NonUsPound) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Backtick) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Q) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', LSHIFT(Key_3)) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_6)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_4)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_Equals) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_e, Key_NonUsPound) \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_G) \ + OP(XKB_KEY_Cyrillic_ha, Key_H) \ + OP(XKB_KEY_Cyrillic_hardsign, LSHIFT(Key_5)) \ + OP(XKB_KEY_Cyrillic_i, Key_I) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_io, LSHIFT(Key_3)) \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_shcha, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_shorti, Key_J) \ + OP(XKB_KEY_Cyrillic_softsign, Key_X) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_C) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_ve, Key_W) \ + OP(XKB_KEY_Cyrillic_ya, Key_Q) \ + OP(XKB_KEY_Cyrillic_yeru, Key_Y) \ + OP(XKB_KEY_Cyrillic_yu, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ze, Key_Z) \ + OP(XKB_KEY_Cyrillic_zhe, Key_V) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace phonetic { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace phonetic +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/phonetic_azerty/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/phonetic_azerty/keymap.h new file mode 100644 index 0000000000..36fdfb5a61 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/phonetic_azerty/keymap.h @@ -0,0 +1,448 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: phonetic_azerty + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(LSHIFT(Key_4))) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(LSHIFT(Key_4))) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'´', RALT(Key_M)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'ˇ', RALT(LSHIFT(Key_Quote))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˝', RALT(LSHIFT(Key_M))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'А', LSHIFT(Key_Q)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_Z)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_G)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_V)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_W)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_I)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_J)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_Semicolon)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_H)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_C)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_Equals)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_LeftBracket)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_RightBracket)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ы', LSHIFT(Key_Y)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_X)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_NonUsPound)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Backtick)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_A)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_Q) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_Z) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_G) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_V) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_W) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_I) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_J) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_Semicolon) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_H) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_C) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_Equals) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_LeftBracket) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_RightBracket) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ы', Key_Y) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_X) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_NonUsPound) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Backtick) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_A) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_a, Key_Q) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_Equals) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_e, Key_NonUsPound) \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_G) \ + OP(XKB_KEY_Cyrillic_ha, Key_H) \ + OP(XKB_KEY_Cyrillic_i, Key_I) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_shcha, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_shorti, Key_J) \ + OP(XKB_KEY_Cyrillic_softsign, Key_X) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_C) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_ve, Key_Z) \ + OP(XKB_KEY_Cyrillic_ya, Key_A) \ + OP(XKB_KEY_Cyrillic_yeru, Key_Y) \ + OP(XKB_KEY_Cyrillic_yu, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ze, Key_W) \ + OP(XKB_KEY_Cyrillic_zhe, Key_V) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_acute, RALT(Key_M)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, Key_8) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace phonetic_azerty { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace phonetic_azerty +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/phonetic_dvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/phonetic_dvorak/keymap.h new file mode 100644 index 0000000000..ca58704509 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/phonetic_dvorak/keymap.h @@ -0,0 +1,388 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: phonetic_dvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'·', RALT(LSHIFT(Key_E))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'Ё', LSHIFT(Key_4)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_N)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_Comma)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_H)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_D)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Period)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Slash)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_G)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_C)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_V)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_P)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_L)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_S)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_R)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_O)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_Semicolon)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_K)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_F)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_Y)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_J)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_I)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_RightBracket)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_Minus)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_Equals)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_6)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_T)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_B)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_NonUsPound)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Backtick)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_X)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_N) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_Comma) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_H) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_D) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Period) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Slash) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_G) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_C) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_V) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_P) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_L) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_S) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_R) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_O) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_Semicolon) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_K) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_F) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_Y) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_J) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_I) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_RightBracket) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_Minus) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_Equals) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', LSHIFT(Key_5)) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_T) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_B) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_NonUsPound) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Backtick) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_X) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', LSHIFT(Key_3)) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_6)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_4)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_N) \ + OP(XKB_KEY_Cyrillic_che, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_de, Key_H) \ + OP(XKB_KEY_Cyrillic_e, Key_NonUsPound) \ + OP(XKB_KEY_Cyrillic_ef, Key_Y) \ + OP(XKB_KEY_Cyrillic_el, Key_P) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_L) \ + OP(XKB_KEY_Cyrillic_er, Key_O) \ + OP(XKB_KEY_Cyrillic_es, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_J) \ + OP(XKB_KEY_Cyrillic_hardsign, LSHIFT(Key_5)) \ + OP(XKB_KEY_Cyrillic_i, Key_G) \ + OP(XKB_KEY_Cyrillic_ie, Key_D) \ + OP(XKB_KEY_Cyrillic_io, LSHIFT(Key_3)) \ + OP(XKB_KEY_Cyrillic_ka, Key_V) \ + OP(XKB_KEY_Cyrillic_o, Key_S) \ + OP(XKB_KEY_Cyrillic_pe, Key_R) \ + OP(XKB_KEY_Cyrillic_sha, Key_Minus) \ + OP(XKB_KEY_Cyrillic_shcha, Key_Equals) \ + OP(XKB_KEY_Cyrillic_shorti, Key_C) \ + OP(XKB_KEY_Cyrillic_softsign, Key_B) \ + OP(XKB_KEY_Cyrillic_te, Key_K) \ + OP(XKB_KEY_Cyrillic_tse, Key_I) \ + OP(XKB_KEY_Cyrillic_u, Key_F) \ + OP(XKB_KEY_Cyrillic_ve, Key_Comma) \ + OP(XKB_KEY_Cyrillic_ya, Key_X) \ + OP(XKB_KEY_Cyrillic_yeru, Key_T) \ + OP(XKB_KEY_Cyrillic_yu, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ze, Key_Slash) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Period) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Q) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Z)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_E)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Q)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_W))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_W)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Q))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Z))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_Z)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Q)) \ + OP(XKB_KEY_semicolon, Key_Z) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace phonetic_dvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace phonetic_dvorak +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/phonetic_fr/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/phonetic_fr/keymap.h new file mode 100644 index 0000000000..1191413d06 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/phonetic_fr/keymap.h @@ -0,0 +1,551 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: phonetic_fr + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(LSHIFT(Key_4))) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(LSHIFT(Key_W))) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', RALT(LSHIFT(Key_X))) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('N', RALT(LSHIFT(Key_N))) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('n', RALT(Key_N)) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(LSHIFT(Key_4))) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(LSHIFT(Key_W))) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', RALT(LSHIFT(Key_X))) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'N', RALT(LSHIFT(Key_N))) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'n', RALT(Key_N)) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_RightBracket)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_W)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'´', RALT(Key_M)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_Semicolon)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_Semicolon))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_Q))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'æ', RALT(Key_Q)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ˇ', RALT(LSHIFT(Key_Quote))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˝', RALT(LSHIFT(Key_M))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_A))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'А', LSHIFT(Key_Q)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_Z)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_G)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_V)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_W)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_I)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_J)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_Semicolon)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_H)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_C)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_Equals)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_LeftBracket)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_RightBracket)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ы', LSHIFT(Key_Y)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_X)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_NonUsPound)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Backtick)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_A)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_Q) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_Z) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_G) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_V) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_W) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_I) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_J) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_Semicolon) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_H) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_C) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_Equals) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_LeftBracket) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_RightBracket) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ы', Key_Y) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_X) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_NonUsPound) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Backtick) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_A) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_a, Key_Q) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_Equals) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_e, Key_NonUsPound) \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_G) \ + OP(XKB_KEY_Cyrillic_ha, Key_H) \ + OP(XKB_KEY_Cyrillic_i, Key_I) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_shcha, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_shorti, Key_J) \ + OP(XKB_KEY_Cyrillic_softsign, Key_X) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_C) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_ve, Key_Z) \ + OP(XKB_KEY_Cyrillic_ya, Key_A) \ + OP(XKB_KEY_Cyrillic_yeru, Key_Y) \ + OP(XKB_KEY_Cyrillic_yu, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ze, Key_W) \ + OP(XKB_KEY_Cyrillic_zhe, Key_V) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_acute, RALT(Key_M)) \ + OP(XKB_KEY_ae, RALT(Key_Q)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_RightBracket)) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_guillemotleft, RALT(Key_W)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, RALT(Key_Semicolon)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, RALT(Key_N)) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, Key_8) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace phonetic_fr { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace phonetic_fr +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/phonetic_winkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/phonetic_winkeys/keymap.h new file mode 100644 index 0000000000..c9288a6563 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/phonetic_winkeys/keymap.h @@ -0,0 +1,380 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: phonetic_winkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ё', LSHIFT(Key_4)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_W)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_G)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_V)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Z)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_I)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_J)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_X)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_C)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_H)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_LeftBracket)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_RightBracket)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_6)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_Y)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_Equals)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_NonUsPound)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Backtick)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Q)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_W) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_G) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_V) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Z) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_I) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_J) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_X) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_C) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_H) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_LeftBracket) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_RightBracket) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', LSHIFT(Key_5)) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_Y) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_Equals) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_NonUsPound) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Backtick) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Q) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', LSHIFT(Key_3)) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_6)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_4)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_H) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_e, Key_NonUsPound) \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_G) \ + OP(XKB_KEY_Cyrillic_ha, Key_X) \ + OP(XKB_KEY_Cyrillic_hardsign, LSHIFT(Key_5)) \ + OP(XKB_KEY_Cyrillic_i, Key_I) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_io, LSHIFT(Key_3)) \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_shcha, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_shorti, Key_J) \ + OP(XKB_KEY_Cyrillic_softsign, Key_Equals) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_C) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_ve, Key_W) \ + OP(XKB_KEY_Cyrillic_ya, Key_Q) \ + OP(XKB_KEY_Cyrillic_yeru, Key_Y) \ + OP(XKB_KEY_Cyrillic_yu, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ze, Key_Z) \ + OP(XKB_KEY_Cyrillic_zhe, Key_V) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace phonetic_winkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace phonetic_winkeys +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/prxn/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/prxn/keymap.h new file mode 100644 index 0000000000..631ab0b0cc --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/prxn/keymap.h @@ -0,0 +1,530 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: prxn + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('\'', LSHIFT(Key_Backtick)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsPound) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('[', RALT(Key_9)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_0)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', RALT(LSHIFT(Key_9))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(LSHIFT(Key_0))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'\'', LSHIFT(Key_Backtick)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsPound) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'[', RALT(Key_9)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_0)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', RALT(LSHIFT(Key_9))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(LSHIFT(Key_0))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¤', RALT(LSHIFT(Key_3))) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'§', LSHIFT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'«', RALT(Key_Comma)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', RALT(Key_5)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'»', RALT(Key_Period)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', RALT(Key_V)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(LSHIFT(Key_V))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'̀', RALT(LSHIFT(Key_Backtick))) \ + OP(L'́', RALT(Key_Backtick)) \ + OP(L'̄', RALT(Key_1)) \ + OP(L'̆', RALT(LSHIFT(Key_1))) \ + OP(L'̋', RALT(Key_7)) \ + OP(L'̏', RALT(LSHIFT(Key_7))) \ + OP(L'̱', RALT(Key_8)) \ + OP(L'̲', RALT(LSHIFT(Key_8))) \ + OP(L'̵', RALT(Key_6)) \ + OP(L'̶', RALT(LSHIFT(Key_6))) \ + OP(L'Ё', RALT(LSHIFT(Key_T))) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'Ђ', RALT(LSHIFT(Key_Semicolon))) /* U+0402, XKB_KEY_Serbian_DJE, CYRILLIC CAPITAL LETTER DJE */ \ + OP(L'Є', RALT(LSHIFT(Key_Quote))) /* U+0404, XKB_KEY_Ukrainian_IE, CYRILLIC CAPITAL LETTER UKRAINIAN IE */ \ + OP(L'І', RALT(LSHIFT(Key_S))) /* U+0406, XKB_KEY_Ukrainian_I, CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'Ї', RALT(LSHIFT(Key_RightBracket))) /* U+0407, XKB_KEY_Ukrainian_YI, CYRILLIC CAPITAL LETTER YI */ \ + OP(L'Ј', RALT(LSHIFT(Key_Q))) /* U+0408, XKB_KEY_Cyrillic_JE, CYRILLIC CAPITAL LETTER JE */ \ + OP(L'Љ', RALT(LSHIFT(Key_K))) /* U+0409, XKB_KEY_Cyrillic_LJE, CYRILLIC CAPITAL LETTER LJE */ \ + OP(L'Њ', RALT(LSHIFT(Key_Y))) /* U+040a, XKB_KEY_Cyrillic_NJE, CYRILLIC CAPITAL LETTER NJE */ \ + OP(L'Ћ', RALT(LSHIFT(Key_X))) /* U+040b, XKB_KEY_Serbian_TSHE, CYRILLIC CAPITAL LETTER TSHE */ \ + OP(L'Ў', RALT(LSHIFT(Key_E))) /* U+040e, XKB_KEY_Byelorussian_SHORTU, CYRILLIC CAPITAL LETTER SHORT U */ \ + OP(L'Џ', RALT(LSHIFT(Key_L))) /* U+040f, XKB_KEY_Cyrillic_DZHE, CYRILLIC CAPITAL LETTER DZHE */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', RALT(Key_T)) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'ђ', RALT(Key_Semicolon)) /* U+0452, XKB_KEY_Serbian_dje, CYRILLIC SMALL LETTER DJE */ \ + OP(L'є', RALT(Key_Quote)) /* U+0454, XKB_KEY_Ukrainian_ie, CYRILLIC SMALL LETTER UKRAINIAN IE */ \ + OP(L'і', RALT(Key_S)) /* U+0456, XKB_KEY_Ukrainian_i, CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'ї', RALT(Key_RightBracket)) /* U+0457, XKB_KEY_Ukrainian_yi, CYRILLIC SMALL LETTER YI */ \ + OP(L'ј', RALT(Key_Q)) /* U+0458, XKB_KEY_Cyrillic_je, CYRILLIC SMALL LETTER JE */ \ + OP(L'љ', RALT(Key_K)) /* U+0459, XKB_KEY_Cyrillic_lje, CYRILLIC SMALL LETTER LJE */ \ + OP(L'њ', RALT(Key_Y)) /* U+045a, XKB_KEY_Cyrillic_nje, CYRILLIC SMALL LETTER NJE */ \ + OP(L'ћ', RALT(Key_X)) /* U+045b, XKB_KEY_Serbian_tshe, CYRILLIC SMALL LETTER TSHE */ \ + OP(L'ў', RALT(Key_E)) /* U+045e, XKB_KEY_Byelorussian_shortu, CYRILLIC SMALL LETTER SHORT U */ \ + OP(L'џ', RALT(Key_L)) /* U+045f, XKB_KEY_Cyrillic_dzhe, CYRILLIC SMALL LETTER DZHE */ \ + OP(L'Ѩ', RALT(LSHIFT(Key_Z))) \ + OP(L'ѩ', RALT(Key_Z)) \ + OP(L'Ѭ', RALT(LSHIFT(Key_C))) \ + OP(L'ѭ', RALT(Key_C)) \ + OP(L'Ѳ', RALT(LSHIFT(Key_A))) \ + OP(L'ѳ', RALT(Key_A)) \ + OP(L'Ѵ', RALT(LSHIFT(Key_B))) \ + OP(L'ѵ', RALT(Key_B)) \ + OP(L'Ҁ', RALT(LSHIFT(Key_H))) \ + OP(L'ҁ', RALT(Key_H)) \ + OP(L'Ґ', RALT(LSHIFT(Key_U))) /* U+0490, XKB_KEY_Ukrainian_GHE_WITH_UPTURN, CYRILLIC CAPITAL LETTER GHE WITH UPTURN */ \ + OP(L'ґ', RALT(Key_U)) /* U+0491, XKB_KEY_Ukrainian_ghe_with_upturn, CYRILLIC SMALL LETTER GHE WITH UPTURN */ \ + OP(L'Ҕ', LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(L'ҕ', Key_NonUsBackslashAndPipe) \ + OP(L'Қ', RALT(LSHIFT(Key_R))) /* U+049a, XKB_KEY_Cyrillic_KA_descender, CYRILLIC CAPITAL LETTER KA WITH DESCENDER */ \ + OP(L'қ', RALT(Key_R)) /* U+049b, XKB_KEY_Cyrillic_ka_descender, CYRILLIC SMALL LETTER KA WITH DESCENDER */ \ + OP(L'Ҡ', RALT(LSHIFT(Key_I))) \ + OP(L'ҡ', RALT(Key_I)) \ + OP(L'Ҥ', RALT(LSHIFT(Key_M))) \ + OP(L'ҥ', RALT(Key_M)) \ + OP(L'Ҭ', RALT(LSHIFT(Key_N))) \ + OP(L'ҭ', RALT(Key_N)) \ + OP(L'Ҵ', RALT(LSHIFT(Key_W))) \ + OP(L'ҵ', RALT(Key_W)) \ + OP(L'Һ', RALT(LSHIFT(Key_LeftBracket))) /* U+04ba, XKB_KEY_Cyrillic_SHHA, CYRILLIC CAPITAL LETTER SHHA */ \ + OP(L'һ', RALT(Key_LeftBracket)) /* U+04bb, XKB_KEY_Cyrillic_shha, CYRILLIC SMALL LETTER SHHA */ \ + OP(L'Ә', RALT(LSHIFT(Key_F))) /* U+04d8, XKB_KEY_Cyrillic_SCHWA, CYRILLIC CAPITAL LETTER SCHWA */ \ + OP(L'ә', RALT(Key_F)) /* U+04d9, XKB_KEY_Cyrillic_schwa, CYRILLIC SMALL LETTER SCHWA */ \ + OP(L'Ӡ', RALT(LSHIFT(Key_P))) \ + OP(L'ӡ', RALT(Key_P)) \ + OP(L'Ө', RALT(LSHIFT(Key_J))) /* U+04e8, XKB_KEY_Cyrillic_O_bar, CYRILLIC CAPITAL LETTER BARRED O */ \ + OP(L'ө', RALT(Key_J)) /* U+04e9, XKB_KEY_Cyrillic_o_bar, CYRILLIC SMALL LETTER BARRED O */ \ + OP(L'Ԁ', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(L'ԁ', RALT(Key_NonUsBackslashAndPipe)) \ + OP(L'Ԅ', RALT(LSHIFT(Key_O))) \ + OP(L'ԅ', RALT(Key_O)) \ + OP(L'Ԝ', RALT(LSHIFT(Key_D))) \ + OP(L'ԝ', RALT(Key_D)) \ + OP(L'Ԥ', RALT(LSHIFT(Key_G))) \ + OP(L'ԥ', RALT(Key_G)) \ + OP(L'–', RALT(LSHIFT(Key_Minus))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Minus)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'’', Key_Backtick) \ + OP(L'“', RALT(LSHIFT(Key_Period))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_Comma))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'•', RALT(LSHIFT(Key_Slash))) /* U+2022, XKB_KEY_enfilledcircbullet, BULLET */ \ + OP(L'…', RALT(Key_Slash)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'€', RALT(LSHIFT(Key_4))) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'₴', RALT(Key_3)) \ + OP(L'₿', RALT(LSHIFT(Key_2))) \ + OP(L'№', RALT(Key_2)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + OP(L'≈', RALT(LSHIFT(Key_Equals))) /* U+2248, XKB_KEY_approxeq, ALMOST EQUAL TO */ \ + OP(L'≠', RALT(Key_Equals)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'☎', RALT(LSHIFT(Key_NonUsPound))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Byelorussian_SHORTU, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Byelorussian_shortu, RALT(Key_E)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_DZHE, RALT(LSHIFT(Key_L))) /* XKB_KEY_Serbian_DZE, deprecated */ \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Cyrillic_JE, RALT(LSHIFT(Key_Q))) /* XKB_KEY_Serbian_JE, deprecated */ \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_KA_descender, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Cyrillic_LJE, RALT(LSHIFT(Key_K))) /* XKB_KEY_Serbian_LJE, deprecated */ \ + OP(XKB_KEY_Cyrillic_NJE, RALT(LSHIFT(Key_Y))) /* XKB_KEY_Serbian_NJE, deprecated */ \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_O_bar, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SCHWA, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHHA, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_dzhe, RALT(Key_L)) /* XKB_KEY_Serbian_dze, deprecated */ \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, RALT(Key_T)) \ + OP(XKB_KEY_Cyrillic_je, RALT(Key_Q)) /* XKB_KEY_Serbian_je, deprecated */ \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_ka_descender, RALT(Key_R)) \ + OP(XKB_KEY_Cyrillic_lje, RALT(Key_K)) /* XKB_KEY_Serbian_lje, deprecated */ \ + OP(XKB_KEY_Cyrillic_nje, RALT(Key_Y)) /* XKB_KEY_Serbian_nje, deprecated */ \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_o_bar, RALT(Key_J)) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_schwa, RALT(Key_F)) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shha, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_ISO_Level5_Shift, Key_CapsLock) /* XKB_KEY_ISO_Level5_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Serbian_DJE, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Serbian_TSHE, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_Serbian_dje, RALT(Key_Semicolon)) \ + OP(XKB_KEY_Serbian_tshe, RALT(Key_X)) \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_Lock, LSHIFT(Key_LeftShift)) /* XKB_KEY_Shift_Lock, Shift lock */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Ukrainian_GHE_WITH_UPTURN, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Ukrainian_I, RALT(LSHIFT(Key_S))) /* XKB_KEY_Ukranian_I, deprecated */ \ + OP(XKB_KEY_Ukrainian_IE, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_Ukranian_JE, deprecated */ \ + OP(XKB_KEY_Ukrainian_YI, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_Ukranian_YI, deprecated */ \ + OP(XKB_KEY_Ukrainian_ghe_with_upturn, RALT(Key_U)) \ + OP(XKB_KEY_Ukrainian_i, RALT(Key_S)) /* XKB_KEY_Ukranian_i, deprecated */ \ + OP(XKB_KEY_Ukrainian_ie, RALT(Key_Quote)) /* XKB_KEY_Ukranian_je, deprecated */ \ + OP(XKB_KEY_Ukrainian_yi, RALT(Key_RightBracket)) /* XKB_KEY_Ukranian_yi, deprecated */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_Backtick)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_approxeq, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_braceright, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_bracketleft, RALT(Key_9)) \ + OP(XKB_KEY_bracketright, RALT(Key_0)) \ + OP(XKB_KEY_colon, LSHIFT(Key_6)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_currency, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_degree, RALT(Key_5)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_ellipsis, RALT(Key_Slash)) \ + OP(XKB_KEY_emdash, RALT(Key_Minus)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_enfilledcircbullet, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Comma)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Period)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(Key_V)) \ + OP(XKB_KEY_notequal, RALT(Key_Equals)) \ + OP(XKB_KEY_numerosign, RALT(Key_2)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_7)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_section, LSHIFT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_4)) \ + OP(XKB_KEY_slash, Key_NonUsPound) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace prxn { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace prxn +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/rulemak/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/rulemak/keymap.h new file mode 100644 index 0000000000..f573287bbe --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/rulemak/keymap.h @@ -0,0 +1,594 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: rulemak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_P)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', RALT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', RALT(LSHIFT(Key_A))) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', RALT(LSHIFT(Key_B))) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', RALT(LSHIFT(Key_C))) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', RALT(LSHIFT(Key_G))) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', RALT(LSHIFT(Key_K))) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', RALT(LSHIFT(Key_E))) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', RALT(LSHIFT(Key_T))) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', RALT(LSHIFT(Key_H))) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', RALT(LSHIFT(Key_L))) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', RALT(LSHIFT(Key_Y))) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', RALT(LSHIFT(Key_N))) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', RALT(LSHIFT(Key_U))) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', RALT(LSHIFT(Key_M))) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', RALT(LSHIFT(Key_J))) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', RALT(LSHIFT(Key_Semicolon))) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', RALT(LSHIFT(Key_R))) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', RALT(LSHIFT(Key_S))) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', RALT(LSHIFT(Key_D))) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', RALT(LSHIFT(Key_F))) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', RALT(LSHIFT(Key_I))) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', RALT(LSHIFT(Key_V))) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', RALT(LSHIFT(Key_O))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', RALT(LSHIFT(Key_Z))) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_9)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_0)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsBackslashAndPipe)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', RALT(Key_A)) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', RALT(Key_B)) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', RALT(Key_C)) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', RALT(Key_G)) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', RALT(Key_K)) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', RALT(Key_E)) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', RALT(Key_T)) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', RALT(Key_H)) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', RALT(Key_L)) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', RALT(Key_Y)) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', RALT(Key_N)) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', RALT(Key_U)) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', RALT(Key_M)) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', RALT(Key_J)) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', RALT(Key_Semicolon)) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', RALT(Key_R)) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', RALT(Key_S)) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', RALT(Key_D)) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', RALT(Key_F)) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', RALT(Key_I)) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', RALT(Key_V)) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', RALT(Key_O)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', RALT(Key_Z)) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(LSHIFT(Key_NonUsPound))) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_P)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', RALT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', RALT(LSHIFT(Key_A))) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', RALT(LSHIFT(Key_B))) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', RALT(LSHIFT(Key_C))) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', RALT(LSHIFT(Key_G))) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', RALT(LSHIFT(Key_K))) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', RALT(LSHIFT(Key_E))) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', RALT(LSHIFT(Key_T))) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', RALT(LSHIFT(Key_H))) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', RALT(LSHIFT(Key_L))) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', RALT(LSHIFT(Key_Y))) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', RALT(LSHIFT(Key_N))) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', RALT(LSHIFT(Key_U))) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', RALT(LSHIFT(Key_M))) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', RALT(LSHIFT(Key_J))) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', RALT(LSHIFT(Key_Semicolon))) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', RALT(LSHIFT(Key_R))) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', RALT(LSHIFT(Key_S))) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', RALT(LSHIFT(Key_D))) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', RALT(LSHIFT(Key_F))) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', RALT(LSHIFT(Key_I))) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', RALT(LSHIFT(Key_V))) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', RALT(LSHIFT(Key_O))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', RALT(LSHIFT(Key_Z))) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_9)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_0)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsBackslashAndPipe)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', RALT(Key_A)) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', RALT(Key_B)) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', RALT(Key_C)) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', RALT(Key_G)) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', RALT(Key_K)) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', RALT(Key_E)) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', RALT(Key_T)) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', RALT(Key_H)) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', RALT(Key_L)) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', RALT(Key_Y)) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', RALT(Key_N)) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', RALT(Key_U)) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', RALT(Key_M)) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', RALT(Key_J)) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', RALT(Key_Semicolon)) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', RALT(Key_R)) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', RALT(Key_S)) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', RALT(Key_D)) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', RALT(Key_F)) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', RALT(Key_I)) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', RALT(Key_V)) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', RALT(Key_O)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', RALT(Key_Z)) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(LSHIFT(Key_NonUsPound))) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¢', RALT(Key_4)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_LeftBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'̀', RALT(Key_Backtick)) \ + OP(L'́', Key_NonUsBackslashAndPipe) \ + OP(L'̆', RALT(Key_6)) \ + OP(L'̇', RALT(Key_7)) \ + OP(L'̋', RALT(Key_2)) \ + OP(L'Ё', LSHIFT(Key_Backtick)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_V)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_T)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_G)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_K)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_W)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Z)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_L)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Y)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_N)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_U)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_J)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_Semicolon)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_R)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_S)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_D)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_F)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_I)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_E)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_X)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_C)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_H)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_LeftBracket)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_RightBracket)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_Equals)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_O)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_Quote)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_NonUsPound)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_P)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Q)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_V) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_T) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_G) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_K) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_W) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Z) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_L) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Y) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_N) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_U) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_J) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_Semicolon) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_R) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_S) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_D) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_F) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_I) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_E) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_X) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_C) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_H) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_LeftBracket) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_RightBracket) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_Equals) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_O) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_Quote) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_NonUsPound) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_P) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Q) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Backtick) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Minus))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'₽', RALT(Key_8)) \ + OP(L'№', LSHIFT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_H) \ + OP(XKB_KEY_Cyrillic_de, Key_G) \ + OP(XKB_KEY_Cyrillic_e, Key_NonUsPound) \ + OP(XKB_KEY_Cyrillic_ef, Key_E) \ + OP(XKB_KEY_Cyrillic_el, Key_U) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_J) \ + OP(XKB_KEY_Cyrillic_er, Key_S) \ + OP(XKB_KEY_Cyrillic_es, Key_D) \ + OP(XKB_KEY_Cyrillic_ghe, Key_T) \ + OP(XKB_KEY_Cyrillic_ha, Key_X) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_Equals) \ + OP(XKB_KEY_Cyrillic_i, Key_L) \ + OP(XKB_KEY_Cyrillic_ie, Key_K) \ + OP(XKB_KEY_Cyrillic_io, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ka, Key_N) \ + OP(XKB_KEY_Cyrillic_o, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_pe, Key_R) \ + OP(XKB_KEY_Cyrillic_sha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_shcha, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Y) \ + OP(XKB_KEY_Cyrillic_softsign, Key_Quote) \ + OP(XKB_KEY_Cyrillic_te, Key_F) \ + OP(XKB_KEY_Cyrillic_tse, Key_C) \ + OP(XKB_KEY_Cyrillic_u, Key_I) \ + OP(XKB_KEY_Cyrillic_ve, Key_V) \ + OP(XKB_KEY_Cyrillic_ya, Key_Q) \ + OP(XKB_KEY_Cyrillic_yeru, Key_O) \ + OP(XKB_KEY_Cyrillic_yu, Key_P) \ + OP(XKB_KEY_Cyrillic_ze, Key_Z) \ + OP(XKB_KEY_Cyrillic_zhe, Key_W) \ + OP(XKB_KEY_D, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_H, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_K, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Mode_switch, Key_PcApplication) /* XKB_KEY_Mode_switch, Character set switch */ \ + OP(XKB_KEY_Multi_key, LSHIFT(Key_PcApplication)) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_P, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_W, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_X, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Z, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, RALT(Key_B)) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_bar, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_braceright, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_bracketleft, RALT(Key_9)) \ + OP(XKB_KEY_bracketright, RALT(Key_0)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(Key_4)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, RALT(Key_G)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, RALT(Key_K)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_equal, RALT(Key_Equals)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, RALT(Key_E)) \ + OP(XKB_KEY_g, RALT(Key_T)) \ + OP(XKB_KEY_grave, RALT(Key_NonUsBackslashAndPipe)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_h, RALT(Key_H)) \ + OP(XKB_KEY_i, RALT(Key_L)) \ + OP(XKB_KEY_j, RALT(Key_Y)) \ + OP(XKB_KEY_k, RALT(Key_N)) \ + OP(XKB_KEY_l, RALT(Key_U)) \ + OP(XKB_KEY_less, RALT(Key_Comma)) \ + OP(XKB_KEY_m, RALT(Key_M)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, RALT(Key_J)) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Spacebar))) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, RALT(Key_Semicolon)) \ + OP(XKB_KEY_p, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_r, RALT(Key_S)) \ + OP(XKB_KEY_s, RALT(Key_D)) \ + OP(XKB_KEY_semicolon, RALT(Key_P)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, RALT(Key_F)) \ + OP(XKB_KEY_u, RALT(Key_I)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, RALT(Key_V)) \ + OP(XKB_KEY_w, RALT(Key_W)) \ + OP(XKB_KEY_x, RALT(Key_X)) \ + OP(XKB_KEY_y, RALT(Key_O)) \ + OP(XKB_KEY_z, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace rulemak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace rulemak +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/ruu/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/ruu/keymap.h new file mode 100644 index 0000000000..3667bf2ef1 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/ruu/keymap.h @@ -0,0 +1,475 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: ruu + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('\'', LSHIFT(Key_Backtick)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsPound) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_6)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_7)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('[', RALT(Key_9)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_0)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', RALT(LSHIFT(Key_9))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(LSHIFT(Key_0))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'\'', LSHIFT(Key_Backtick)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsPound) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_6)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_7)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'[', RALT(Key_9)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_0)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', RALT(LSHIFT(Key_9))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(LSHIFT(Key_0))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¤', RALT(Key_2)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsPound))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Comma)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_5)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Equals))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_P)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'»', RALT(Key_Period)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', RALT(LSHIFT(Key_8))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(Key_1)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'́', RALT(Key_Backtick)) \ + OP(L'Ё', RALT(LSHIFT(Key_T))) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'Є', RALT(LSHIFT(Key_Quote))) /* U+0404, XKB_KEY_Ukrainian_IE, CYRILLIC CAPITAL LETTER UKRAINIAN IE */ \ + OP(L'І', RALT(LSHIFT(Key_S))) /* U+0406, XKB_KEY_Ukrainian_I, CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'Ї', RALT(LSHIFT(Key_RightBracket))) /* U+0407, XKB_KEY_Ukrainian_YI, CYRILLIC CAPITAL LETTER YI */ \ + OP(L'Ў', RALT(LSHIFT(Key_E))) /* U+040e, XKB_KEY_Byelorussian_SHORTU, CYRILLIC CAPITAL LETTER SHORT U */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', RALT(Key_T)) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'є', RALT(Key_Quote)) /* U+0454, XKB_KEY_Ukrainian_ie, CYRILLIC SMALL LETTER UKRAINIAN IE */ \ + OP(L'і', RALT(Key_S)) /* U+0456, XKB_KEY_Ukrainian_i, CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'ї', RALT(Key_RightBracket)) /* U+0457, XKB_KEY_Ukrainian_yi, CYRILLIC SMALL LETTER YI */ \ + OP(L'ў', RALT(Key_E)) /* U+045e, XKB_KEY_Byelorussian_shortu, CYRILLIC SMALL LETTER SHORT U */ \ + OP(L'Ґ', RALT(LSHIFT(Key_U))) /* U+0490, XKB_KEY_Ukrainian_GHE_WITH_UPTURN, CYRILLIC CAPITAL LETTER GHE WITH UPTURN */ \ + OP(L'ґ', RALT(Key_U)) /* U+0491, XKB_KEY_Ukrainian_ghe_with_upturn, CYRILLIC SMALL LETTER GHE WITH UPTURN */ \ + OP(L'–', RALT(LSHIFT(Key_Minus))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Minus)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'’', Key_Backtick) \ + OP(L'“', RALT(LSHIFT(Key_Period))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_Comma))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'•', RALT(Key_8)) /* U+2022, XKB_KEY_enfilledcircbullet, BULLET */ \ + OP(L'…', RALT(LSHIFT(Key_Slash))) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'€', RALT(LSHIFT(Key_4))) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'₴', RALT(LSHIFT(Key_3))) \ + OP(L'№', LSHIFT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + OP(L'™', RALT(Key_N)) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'∞', RALT(LSHIFT(Key_2))) /* U+221e, XKB_KEY_infinity, INFINITY */ \ + OP(L'≈', RALT(LSHIFT(Key_1))) /* U+2248, XKB_KEY_approxeq, ALMOST EQUAL TO */ \ + OP(L'≠', RALT(Key_Equals)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'≤', RALT(LSHIFT(Key_6))) \ + OP(L'≥', RALT(LSHIFT(Key_7))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Byelorussian_SHORTU, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Byelorussian_shortu, RALT(Key_E)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, RALT(Key_T)) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Ukrainian_GHE_WITH_UPTURN, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Ukrainian_I, RALT(LSHIFT(Key_S))) /* XKB_KEY_Ukranian_I, deprecated */ \ + OP(XKB_KEY_Ukrainian_IE, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_Ukranian_JE, deprecated */ \ + OP(XKB_KEY_Ukrainian_YI, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_Ukranian_YI, deprecated */ \ + OP(XKB_KEY_Ukrainian_ghe_with_upturn, RALT(Key_U)) \ + OP(XKB_KEY_Ukrainian_i, RALT(Key_S)) /* XKB_KEY_Ukranian_i, deprecated */ \ + OP(XKB_KEY_Ukrainian_ie, RALT(Key_Quote)) /* XKB_KEY_Ukranian_je, deprecated */ \ + OP(XKB_KEY_Ukrainian_yi, RALT(Key_RightBracket)) /* XKB_KEY_Ukranian_yi, deprecated */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_Backtick)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_approxeq, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_braceright, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_bracketleft, RALT(Key_9)) \ + OP(XKB_KEY_bracketright, RALT(Key_0)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_colon, LSHIFT(Key_6)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, RALT(Key_2)) \ + OP(XKB_KEY_degree, RALT(Key_5)) \ + OP(XKB_KEY_division, RALT(Key_1)) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_ellipsis, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_emdash, RALT(Key_Minus)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_enfilledcircbullet, RALT(Key_8)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, RALT(Key_7)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Comma)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Period)) \ + OP(XKB_KEY_infinity, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_less, RALT(Key_6)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_notequal, RALT(Key_Equals)) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_3)) \ + OP(XKB_KEY_paragraph, RALT(Key_P)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_question, LSHIFT(Key_7)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_section, RALT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_4)) \ + OP(XKB_KEY_slash, Key_NonUsPound) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_trademark, RALT(Key_N)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace ruu { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ruu +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/sah/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/sah/keymap.h new file mode 100644 index 0000000000..e6017df885 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/sah/keymap.h @@ -0,0 +1,413 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: sah + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ё', LSHIFT(Key_Backtick)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Backtick) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'Ѡ', RALT(LSHIFT(Key_Semicolon))) \ + OP(L'ѡ', RALT(Key_Semicolon)) \ + OP(L'Ҋ', RALT(LSHIFT(Key_Q))) \ + OP(L'ҋ', RALT(Key_Q)) \ + OP(L'Ҕ', RALT(LSHIFT(Key_U))) \ + OP(L'ҕ', RALT(Key_U)) \ + OP(L'Ҥ', RALT(LSHIFT(Key_Y))) \ + OP(L'ҥ', RALT(Key_Y)) \ + OP(L'Ү', RALT(LSHIFT(Key_E))) /* U+04ae, XKB_KEY_Cyrillic_U_straight, CYRILLIC CAPITAL LETTER STRAIGHT U */ \ + OP(L'ү', RALT(Key_E)) /* U+04af, XKB_KEY_Cyrillic_u_straight, CYRILLIC SMALL LETTER STRAIGHT U */ \ + OP(L'Һ', RALT(LSHIFT(Key_LeftBracket))) /* U+04ba, XKB_KEY_Cyrillic_SHHA, CYRILLIC CAPITAL LETTER SHHA */ \ + OP(L'һ', RALT(Key_LeftBracket)) /* U+04bb, XKB_KEY_Cyrillic_shha, CYRILLIC SMALL LETTER SHHA */ \ + OP(L'Ӄ', RALT(LSHIFT(Key_R))) \ + OP(L'ӄ', RALT(Key_R)) \ + OP(L'Ӈ', RALT(LSHIFT(Key_V))) \ + OP(L'ӈ', RALT(Key_V)) \ + OP(L'Ӡ', RALT(LSHIFT(Key_P))) \ + OP(L'ӡ', RALT(Key_P)) \ + OP(L'Ӣ', RALT(LSHIFT(Key_B))) /* U+04e2, XKB_KEY_Cyrillic_I_macron, CYRILLIC CAPITAL LETTER I WITH MACRON */ \ + OP(L'ӣ', RALT(Key_B)) /* U+04e3, XKB_KEY_Cyrillic_i_macron, CYRILLIC SMALL LETTER I WITH MACRON */ \ + OP(L'Ө', RALT(LSHIFT(Key_J))) /* U+04e8, XKB_KEY_Cyrillic_O_bar, CYRILLIC CAPITAL LETTER BARRED O */ \ + OP(L'ө', RALT(Key_J)) /* U+04e9, XKB_KEY_Cyrillic_o_bar, CYRILLIC SMALL LETTER BARRED O */ \ + OP(L'Ӫ', RALT(LSHIFT(Key_Backtick))) \ + OP(L'ӫ', RALT(Key_Backtick)) \ + OP(L'Ӯ', RALT(LSHIFT(Key_X))) /* U+04ee, XKB_KEY_Cyrillic_U_macron, CYRILLIC CAPITAL LETTER U WITH MACRON */ \ + OP(L'ӯ', RALT(Key_X)) /* U+04ef, XKB_KEY_Cyrillic_u_macron, CYRILLIC SMALL LETTER U WITH MACRON */ \ + OP(L'₽', RALT(Key_8)) \ + OP(L'№', LSHIFT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_I_macron, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_O_bar, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHHA, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_U_macron, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_Cyrillic_U_straight, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_i_macron, RALT(Key_B)) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_o_bar, RALT(Key_J)) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shha, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_u_macron, RALT(Key_X)) \ + OP(XKB_KEY_Cyrillic_u_straight, RALT(Key_E)) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_6)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_7)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_4)) \ + OP(XKB_KEY_slash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace sah { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sah +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/srp/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/srp/keymap.h new file mode 100644 index 0000000000..2bc3d515ce --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/srp/keymap.h @@ -0,0 +1,388 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: srp + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ё', LSHIFT(Key_Backtick)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'Ђ', RALT(LSHIFT(Key_Semicolon))) \ + OP(L'Ј', RALT(LSHIFT(Key_Q))) \ + OP(L'Љ', RALT(LSHIFT(Key_K))) \ + OP(L'Њ', RALT(LSHIFT(Key_Y))) \ + OP(L'Ћ', RALT(LSHIFT(Key_X))) \ + OP(L'Џ', RALT(LSHIFT(Key_L))) \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Backtick) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'ђ', RALT(Key_Semicolon)) \ + OP(L'ј', RALT(Key_Q)) \ + OP(L'љ', RALT(Key_K)) \ + OP(L'њ', RALT(Key_Y)) \ + OP(L'ћ', RALT(Key_X)) \ + OP(L'џ', RALT(Key_L)) \ + OP(L'№', LSHIFT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_6)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_7)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_4)) \ + OP(XKB_KEY_slash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace srp { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace srp +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/standard/keymap.h new file mode 100644 index 0000000000..34f6e7afef --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/standard/keymap.h @@ -0,0 +1,375 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Ё', LSHIFT(Key_Backtick)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Backtick) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'№', LSHIFT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, LSHIFT(Key_6)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_7)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_4)) \ + OP(XKB_KEY_slash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/sun_type6/keymap.h new file mode 100644 index 0000000000..6f9fb83e56 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/sun_type6/keymap.h @@ -0,0 +1,572 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(LSHIFT(Key_3))) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(LSHIFT(Key_4))) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_4)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(LSHIFT(Key_7))) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', RALT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_7)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsPound) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_5)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_8)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(LSHIFT(Key_Comma))) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(LSHIFT(Key_Period))) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_NonUsPound)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(LSHIFT(Key_2))) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', RALT(LSHIFT(Key_A))) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', RALT(LSHIFT(Key_B))) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', RALT(LSHIFT(Key_C))) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', RALT(LSHIFT(Key_D))) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', RALT(LSHIFT(Key_E))) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', RALT(LSHIFT(Key_F))) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', RALT(LSHIFT(Key_G))) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', RALT(LSHIFT(Key_H))) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', RALT(LSHIFT(Key_I))) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', RALT(LSHIFT(Key_J))) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', RALT(LSHIFT(Key_K))) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', RALT(LSHIFT(Key_L))) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', RALT(LSHIFT(Key_M))) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', RALT(LSHIFT(Key_N))) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', RALT(LSHIFT(Key_O))) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', RALT(LSHIFT(Key_P))) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', RALT(LSHIFT(Key_R))) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', RALT(LSHIFT(Key_S))) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', RALT(LSHIFT(Key_T))) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', RALT(LSHIFT(Key_U))) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', RALT(LSHIFT(Key_V))) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', RALT(LSHIFT(Key_Y))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', RALT(LSHIFT(Key_Z))) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', RALT(Key_A)) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', RALT(Key_B)) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', RALT(Key_C)) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', RALT(Key_D)) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', RALT(Key_E)) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', RALT(Key_F)) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', RALT(Key_G)) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', RALT(Key_H)) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', RALT(Key_I)) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', RALT(Key_J)) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', RALT(Key_K)) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', RALT(Key_L)) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', RALT(Key_M)) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', RALT(Key_N)) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', RALT(Key_O)) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', RALT(Key_P)) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', RALT(Key_R)) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', RALT(Key_S)) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', RALT(Key_T)) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', RALT(Key_U)) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', RALT(Key_V)) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', RALT(Key_Y)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', RALT(Key_Z)) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(LSHIFT(Key_3))) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(LSHIFT(Key_4))) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_4)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(LSHIFT(Key_7))) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', RALT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_7)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsPound) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_5)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_8)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(LSHIFT(Key_Comma))) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(LSHIFT(Key_Period))) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_NonUsPound)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(LSHIFT(Key_2))) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', RALT(LSHIFT(Key_A))) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', RALT(LSHIFT(Key_B))) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', RALT(LSHIFT(Key_C))) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', RALT(LSHIFT(Key_D))) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', RALT(LSHIFT(Key_E))) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', RALT(LSHIFT(Key_F))) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', RALT(LSHIFT(Key_G))) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', RALT(LSHIFT(Key_H))) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', RALT(LSHIFT(Key_I))) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', RALT(LSHIFT(Key_J))) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', RALT(LSHIFT(Key_K))) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', RALT(LSHIFT(Key_L))) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', RALT(LSHIFT(Key_M))) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', RALT(LSHIFT(Key_N))) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', RALT(LSHIFT(Key_O))) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', RALT(LSHIFT(Key_P))) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', RALT(LSHIFT(Key_R))) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', RALT(LSHIFT(Key_S))) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', RALT(LSHIFT(Key_T))) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', RALT(LSHIFT(Key_U))) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', RALT(LSHIFT(Key_V))) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', RALT(LSHIFT(Key_Y))) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', RALT(LSHIFT(Key_Z))) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', RALT(Key_A)) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', RALT(Key_B)) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', RALT(Key_C)) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', RALT(Key_D)) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', RALT(Key_E)) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', RALT(Key_F)) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', RALT(Key_G)) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', RALT(Key_H)) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', RALT(Key_I)) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', RALT(Key_J)) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', RALT(Key_K)) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', RALT(Key_L)) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', RALT(Key_M)) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', RALT(Key_N)) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', RALT(Key_O)) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', RALT(Key_P)) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', RALT(Key_R)) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', RALT(Key_S)) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', RALT(Key_T)) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', RALT(Key_U)) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', RALT(Key_V)) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', RALT(Key_Y)) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', RALT(Key_Z)) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Ë', LSHIFT(Key_Slash)) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'ë', Key_Slash) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'№', LSHIFT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_D, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Ediaeresis, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_H, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_K, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_W, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_X, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_at, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_b, RALT(Key_B)) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_braceright, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_c, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_5)) \ + OP(XKB_KEY_comma, RALT(Key_Comma)) \ + OP(XKB_KEY_d, RALT(Key_D)) \ + OP(XKB_KEY_dollar, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_e, RALT(Key_E)) \ + OP(XKB_KEY_ediaeresis, Key_Slash) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, RALT(Key_F)) \ + OP(XKB_KEY_g, RALT(Key_G)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_h, RALT(Key_H)) \ + OP(XKB_KEY_i, RALT(Key_I)) \ + OP(XKB_KEY_j, RALT(Key_J)) \ + OP(XKB_KEY_k, RALT(Key_K)) \ + OP(XKB_KEY_l, RALT(Key_L)) \ + OP(XKB_KEY_less, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_m, RALT(Key_M)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, RALT(Key_O)) \ + OP(XKB_KEY_p, RALT(Key_P)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_4)) \ + OP(XKB_KEY_period, LSHIFT(Key_7)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, RALT(Key_R)) \ + OP(XKB_KEY_s, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_8)) \ + OP(XKB_KEY_slash, Key_NonUsPound) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, RALT(Key_T)) \ + OP(XKB_KEY_u, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, RALT(Key_V)) \ + OP(XKB_KEY_w, RALT(Key_W)) \ + OP(XKB_KEY_x, RALT(Key_X)) \ + OP(XKB_KEY_y, RALT(Key_Y)) \ + OP(XKB_KEY_z, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/tt/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/tt/keymap.h new file mode 100644 index 0000000000..5d31e54689 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/tt/keymap.h @@ -0,0 +1,401 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: tt + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ё', RALT(LSHIFT(Key_Backtick))) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', RALT(LSHIFT(Key_Semicolon))) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', RALT(LSHIFT(Key_W))) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', RALT(LSHIFT(Key_O))) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', RALT(LSHIFT(Key_RightBracket))) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', RALT(LSHIFT(Key_M))) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', RALT(Key_Semicolon)) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', RALT(Key_W)) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', RALT(Key_O)) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', RALT(Key_RightBracket)) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', RALT(Key_M)) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', RALT(Key_Backtick)) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'Җ', LSHIFT(Key_M)) /* U+0496, XKB_KEY_Cyrillic_ZHE_descender, CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER */ \ + OP(L'җ', Key_M) /* U+0497, XKB_KEY_Cyrillic_zhe_descender, CYRILLIC SMALL LETTER ZHE WITH DESCENDER */ \ + OP(L'Ң', LSHIFT(Key_Semicolon)) /* U+04a2, XKB_KEY_Cyrillic_EN_descender, CYRILLIC CAPITAL LETTER EN WITH DESCENDER */ \ + OP(L'ң', Key_Semicolon) /* U+04a3, XKB_KEY_Cyrillic_en_descender, CYRILLIC SMALL LETTER EN WITH DESCENDER */ \ + OP(L'Ү', LSHIFT(Key_RightBracket)) /* U+04ae, XKB_KEY_Cyrillic_U_straight, CYRILLIC CAPITAL LETTER STRAIGHT U */ \ + OP(L'ү', Key_RightBracket) /* U+04af, XKB_KEY_Cyrillic_u_straight, CYRILLIC SMALL LETTER STRAIGHT U */ \ + OP(L'Һ', LSHIFT(Key_Backtick)) /* U+04ba, XKB_KEY_Cyrillic_SHHA, CYRILLIC CAPITAL LETTER SHHA */ \ + OP(L'һ', Key_Backtick) /* U+04bb, XKB_KEY_Cyrillic_shha, CYRILLIC SMALL LETTER SHHA */ \ + OP(L'Ә', LSHIFT(Key_O)) /* U+04d8, XKB_KEY_Cyrillic_SCHWA, CYRILLIC CAPITAL LETTER SCHWA */ \ + OP(L'ә', Key_O) /* U+04d9, XKB_KEY_Cyrillic_schwa, CYRILLIC SMALL LETTER SCHWA */ \ + OP(L'Ө', LSHIFT(Key_W)) /* U+04e8, XKB_KEY_Cyrillic_O_bar, CYRILLIC CAPITAL LETTER BARRED O */ \ + OP(L'ө', Key_W) /* U+04e9, XKB_KEY_Cyrillic_o_bar, CYRILLIC SMALL LETTER BARRED O */ \ + OP(L'₽', RALT(Key_8)) \ + OP(L'№', LSHIFT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_EN_descender, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_O_bar, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SCHWA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Cyrillic_SHHA, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_U_straight, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Cyrillic_ZHE_descender, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_en_descender, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, RALT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, RALT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_o_bar, Key_W) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_schwa, Key_O) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, RALT(Key_O)) \ + OP(XKB_KEY_Cyrillic_shha, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, RALT(Key_M)) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, RALT(Key_W)) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_u_straight, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, RALT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_zhe_descender, Key_M) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_6)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_7)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_4)) \ + OP(XKB_KEY_slash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace tt { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace tt +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/typewriter-legacy/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/typewriter-legacy/keymap.h new file mode 100644 index 0000000000..300029d480 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/typewriter-legacy/keymap.h @@ -0,0 +1,374 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: typewriter-legacy + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_1) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Backtick)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', Key_0) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_NonUsPound) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_NonUsPound)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_6) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_7) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_3) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_5) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_4) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', Key_9) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_1) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Backtick)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', Key_0) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_NonUsPound) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_NonUsPound)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_6) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_7) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_3) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_5) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_4) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', Key_9) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Ё', LSHIFT(Key_Slash)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Slash) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'№', Key_2) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, Key_Slash) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_Backtick) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, Key_5) \ + OP(XKB_KEY_comma, Key_6) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, Key_1) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numerosign, Key_2) \ + OP(XKB_KEY_parenleft, Key_NonUsPound) \ + OP(XKB_KEY_parenright, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_percent, Key_0) \ + OP(XKB_KEY_period, Key_7) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, Key_9) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, Key_4) \ + OP(XKB_KEY_slash, Key_3) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, Key_8) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace typewriter_legacy { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace typewriter_legacy +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/typewriter/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/typewriter/keymap.h new file mode 100644 index 0000000000..36aa0fb426 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/typewriter/keymap.h @@ -0,0 +1,374 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: typewriter + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Minus) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_4) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', Key_0) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', LSHIFT(Key_NonUsPound)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_NonUsPound) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_6) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_2) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_7) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_3) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_5) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Equals) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', LSHIFT(Key_Minus)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', Key_9) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', LSHIFT(Key_Equals)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Minus) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_4) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', Key_0) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', LSHIFT(Key_NonUsPound)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_NonUsPound) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_6) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_2) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_7) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_3) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_5) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Equals) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', LSHIFT(Key_Minus)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', Key_9) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', LSHIFT(Key_Equals)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Ё', LSHIFT(Key_Slash)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Slash) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'№', Key_1) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, Key_Slash) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_backslash, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_bar, Key_Backtick) \ + OP(XKB_KEY_colon, Key_5) \ + OP(XKB_KEY_comma, Key_6) \ + OP(XKB_KEY_equal, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_exclam, Key_Minus) \ + OP(XKB_KEY_minus, Key_2) \ + OP(XKB_KEY_numerosign, Key_1) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_parenright, Key_NonUsPound) \ + OP(XKB_KEY_percent, Key_0) \ + OP(XKB_KEY_period, Key_7) \ + OP(XKB_KEY_plus, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_question, Key_9) \ + OP(XKB_KEY_quotedbl, Key_4) \ + OP(XKB_KEY_semicolon, Key_Equals) \ + OP(XKB_KEY_slash, Key_3) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, Key_8) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace typewriter { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace typewriter +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/udm/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/udm/keymap.h new file mode 100644 index 0000000000..89178c86a6 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/udm/keymap.h @@ -0,0 +1,386 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: udm + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', Key_2) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_3) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_5) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_4) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', Key_1) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', Key_2) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_3) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_5) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_4) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', Key_1) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ё', LSHIFT(Key_Backtick)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Backtick) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'Ӝ', LSHIFT(Key_6)) \ + OP(L'ӝ', Key_6) \ + OP(L'Ӟ', LSHIFT(Key_0)) \ + OP(L'ӟ', Key_0) \ + OP(L'Ӥ', LSHIFT(Key_9)) \ + OP(L'ӥ', Key_9) \ + OP(L'Ӧ', LSHIFT(Key_7)) \ + OP(L'ӧ', Key_7) \ + OP(L'Ӵ', LSHIFT(Key_8)) \ + OP(L'ӵ', Key_8) \ + OP(L'№', LSHIFT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_0)) \ + OP(XKB_KEY_1, RALT(Key_1)) \ + OP(XKB_KEY_2, RALT(Key_2)) \ + OP(XKB_KEY_3, RALT(Key_3)) \ + OP(XKB_KEY_4, RALT(Key_4)) \ + OP(XKB_KEY_5, RALT(Key_5)) \ + OP(XKB_KEY_6, RALT(Key_6)) \ + OP(XKB_KEY_7, RALT(Key_7)) \ + OP(XKB_KEY_8, RALT(Key_8)) \ + OP(XKB_KEY_9, RALT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_asterisk, Key_5) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, Key_4) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, Key_2) \ + OP(XKB_KEY_parenright, Key_3) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, Key_1) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_4)) \ + OP(XKB_KEY_slash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace udm { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace udm +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ru/xal/keymap.h b/src/kaleidoscope/host_keymap/linux/ru/xal/keymap.h new file mode 100644 index 0000000000..f1fe749a47 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ru/xal/keymap.h @@ -0,0 +1,426 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ru +// variant: xal + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('$', RALT(Key_W)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_Backtick) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_Backtick)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_5) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_0)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_0) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', Key_1) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'$', RALT(Key_W)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_Backtick) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_Backtick)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_5) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', RALT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', RALT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', RALT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', RALT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', RALT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', RALT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', RALT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', RALT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', RALT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', RALT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_0)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_0) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', Key_1) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'Ё', RALT(LSHIFT(Key_Backtick))) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', RALT(Key_Backtick)) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'Җ', LSHIFT(Key_9)) /* U+0496, XKB_KEY_Cyrillic_ZHE_descender, CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER */ \ + OP(L'җ', Key_9) /* U+0497, XKB_KEY_Cyrillic_zhe_descender, CYRILLIC SMALL LETTER ZHE WITH DESCENDER */ \ + OP(L'Ң', LSHIFT(Key_6)) /* U+04a2, XKB_KEY_Cyrillic_EN_descender, CYRILLIC CAPITAL LETTER EN WITH DESCENDER */ \ + OP(L'ң', Key_6) /* U+04a3, XKB_KEY_Cyrillic_en_descender, CYRILLIC SMALL LETTER EN WITH DESCENDER */ \ + OP(L'Ү', LSHIFT(Key_3)) /* U+04ae, XKB_KEY_Cyrillic_U_straight, CYRILLIC CAPITAL LETTER STRAIGHT U */ \ + OP(L'ү', Key_3) /* U+04af, XKB_KEY_Cyrillic_u_straight, CYRILLIC SMALL LETTER STRAIGHT U */ \ + OP(L'Һ', LSHIFT(Key_8)) /* U+04ba, XKB_KEY_Cyrillic_SHHA, CYRILLIC CAPITAL LETTER SHHA */ \ + OP(L'һ', Key_8) /* U+04bb, XKB_KEY_Cyrillic_shha, CYRILLIC SMALL LETTER SHHA */ \ + OP(L'Ә', LSHIFT(Key_4)) /* U+04d8, XKB_KEY_Cyrillic_SCHWA, CYRILLIC CAPITAL LETTER SCHWA */ \ + OP(L'ә', Key_4) /* U+04d9, XKB_KEY_Cyrillic_schwa, CYRILLIC SMALL LETTER SCHWA */ \ + OP(L'Ө', LSHIFT(Key_7)) /* U+04e8, XKB_KEY_Cyrillic_O_bar, CYRILLIC CAPITAL LETTER BARRED O */ \ + OP(L'ө', Key_7) /* U+04e9, XKB_KEY_Cyrillic_o_bar, CYRILLIC SMALL LETTER BARRED O */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'№', Key_2) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + OP(L'™', RALT(Key_T)) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, RALT(Key_0)) \ + OP(XKB_KEY_1, RALT(Key_1)) \ + OP(XKB_KEY_2, RALT(Key_2)) \ + OP(XKB_KEY_3, RALT(Key_3)) \ + OP(XKB_KEY_4, RALT(Key_4)) \ + OP(XKB_KEY_5, RALT(Key_5)) \ + OP(XKB_KEY_6, RALT(Key_6)) \ + OP(XKB_KEY_7, RALT(Key_7)) \ + OP(XKB_KEY_8, RALT(Key_8)) \ + OP(XKB_KEY_9, RALT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_EN_descender, LSHIFT(Key_6)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_O_bar, LSHIFT(Key_7)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SCHWA, LSHIFT(Key_4)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHHA, LSHIFT(Key_8)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_U_straight, LSHIFT(Key_3)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_ZHE_descender, LSHIFT(Key_9)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_en_descender, Key_6) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, RALT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_o_bar, Key_7) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_schwa, Key_4) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shha, Key_8) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_u_straight, Key_3) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_zhe_descender, Key_9) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, Key_5) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_0)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_dollar, RALT(Key_W)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_less, RALT(Key_Comma)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numerosign, Key_2) \ + OP(XKB_KEY_parenleft, Key_Backtick) \ + OP(XKB_KEY_parenright, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, Key_1) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_semicolon, Key_0) \ + OP(XKB_KEY_slash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_trademark, RALT(Key_T)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ru { +namespace xal { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace xal +} // namespace ru +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/se/dvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/se/dvorak/keymap.h new file mode 100644 index 0000000000..c725d42fb6 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/se/dvorak/keymap.h @@ -0,0 +1,574 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: se +// variant: dvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_LeftBracket) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Z) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_LeftBracket)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_RightBracket))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(LSHIFT(Key_Period))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_LeftBracket) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Z) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_LeftBracket)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_RightBracket))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(LSHIFT(Key_Period))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_5))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_6)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_I)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_Y))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Slash)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_Equals))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_O)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_Equals)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_NonUsPound)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_Backtick)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Z)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_B)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', LSHIFT(Key_Backtick)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_Backtick))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_W)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', LSHIFT(Key_Q)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_H))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_E)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_NonUsPound))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Þ', RALT(LSHIFT(Key_R))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Semicolon)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_W) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', Key_Q) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_H)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_E) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_7))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'þ', RALT(Key_R)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_Y)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_J))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_J)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_G))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_V)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_P))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_P)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_U))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_U)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_S))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_S)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_K))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_K)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'“', RALT(Key_Period)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_N)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_T)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_F))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_G)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_F)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_W)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_Q)) \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_H))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_E)) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_R))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_adiaeresis, Key_W) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_Q) \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Z)) \ + OP(XKB_KEY_comma, Key_LeftBracket) \ + OP(XKB_KEY_copyright, RALT(Key_I)) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Quote)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_LeftBracket)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_F)) \ + OP(XKB_KEY_dstroke, RALT(Key_Y)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_eng, RALT(Key_U)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_H)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, RALT(LSHIFT(Key_Period))) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Slash)) \ + OP(XKB_KEY_guillemotright, RALT(Key_B)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_hstroke, RALT(Key_J)) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_kra, RALT(Key_V)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_leftarrow, RALT(Key_T)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_Period)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_P)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Spacebar))) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_odiaeresis, Key_E) \ + OP(XKB_KEY_oe, RALT(Key_S)) \ + OP(XKB_KEY_onehalf, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_paragraph, RALT(Key_Backtick)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Z) \ + OP(XKB_KEY_periodcentered, RALT(Key_Z)) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(Key_Equals)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_registered, RALT(Key_O)) \ + OP(XKB_KEY_rightarrow, RALT(Key_G)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_N)) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Semicolon)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_thorn, RALT(Key_R)) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_tslash, RALT(Key_K)) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_yen, RALT(Key_6)) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace se { +namespace dvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak +} // namespace se +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/se/dvorak_a5/keymap.h b/src/kaleidoscope/host_keymap/linux/se/dvorak_a5/keymap.h new file mode 100644 index 0000000000..37f9798c53 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/se/dvorak_a5/keymap.h @@ -0,0 +1,506 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: se +// variant: dvorak_a5 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_LeftBracket) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Z) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', RALT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_LeftBracket)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_P)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_J)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Quote)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_G)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_Semicolon)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_LeftBracket) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Z) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', RALT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_LeftBracket)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_P)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_J)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Quote)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_G)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_Semicolon)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_5))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_6)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'«', RALT(Key_Slash)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_Equals)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'¶', RALT(Key_Backtick)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(LSHIFT(Key_9))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', LSHIFT(Key_Backtick)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_Backtick))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_W)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', LSHIFT(Key_Q)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Ö', LSHIFT(Key_E)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'ä', Key_W) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', Key_Q) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'ö', Key_E) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_7))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ł', RALT(Key_Comma)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'“', RALT(Key_Period)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_W)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_Q)) \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_E)) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_W) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_Q) \ + OP(XKB_KEY_asciicircum, RALT(Key_J)) \ + OP(XKB_KEY_asciitilde, RALT(Key_Semicolon)) \ + OP(XKB_KEY_asterisk, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_G)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_colon, RALT(Key_Z)) \ + OP(XKB_KEY_comma, Key_LeftBracket) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_LeftBracket)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, RALT(Key_Quote)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_P)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Slash)) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_Period)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_Comma)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Spacebar))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_odiaeresis, Key_E) \ + OP(XKB_KEY_onehalf, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_paragraph, RALT(Key_Backtick)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Z) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(Key_Equals)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_yen, RALT(Key_6)) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace se { +namespace dvorak_a5 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak_a5 +} // namespace se +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/se/mac/keymap.h b/src/kaleidoscope/host_keymap/linux/se/mac/keymap.h new file mode 100644 index 0000000000..10c3e2b753 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/se/mac/keymap.h @@ -0,0 +1,576 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: se +// variant: mac + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(LSHIFT(Key_8))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_7)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(LSHIFT(Key_8))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_7)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_3))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', Key_RightBracket) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_1)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', LSHIFT(Key_Backtick)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'´', Key_Equals) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, Key_Equals) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_7)) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_1)) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_diaeresis, Key_RightBracket) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace se { +namespace mac { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mac +} // namespace se +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/se/nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/se/nodeadkeys/keymap.h new file mode 100644 index 0000000000..d0a6d658ef --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/se/nodeadkeys/keymap.h @@ -0,0 +1,585 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: se +// variant: nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_5))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_6)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', Key_RightBracket) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_A)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_Equals))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_Equals)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', Key_Equals) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_Backtick)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¸', RALT(Key_Comma)) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_A))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', LSHIFT(Key_Backtick)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_Backtick))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Quote))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_NonUsPound))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_Semicolon))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_Quote)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_7))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_Semicolon)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'ˇ', RALT(LSHIFT(Key_RightBracket))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˙', RALT(LSHIFT(Key_Period))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_Comma))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_acute, Key_Equals) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_Quote)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_cedilla, RALT(Key_Comma)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_diaeresis, Key_RightBracket) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Spacebar))) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_onehalf, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_A)) \ + OP(XKB_KEY_oslash, RALT(Key_Semicolon)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_Backtick)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_6)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace se { +namespace nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace nodeadkeys +} // namespace se +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/se/ovd/keymap.h b/src/kaleidoscope/host_keymap/linux/se/ovd/keymap.h new file mode 100644 index 0000000000..8cd5fdd1b7 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/se/ovd/keymap.h @@ -0,0 +1,577 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: se +// variant: ovd + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_5))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_6)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_A)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_Equals))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_Equals)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_NonUsPound)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_Backtick)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_A))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', LSHIFT(Key_Backtick)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_Backtick))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Quote))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_NonUsPound))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_Semicolon))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_Quote)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_7))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_Semicolon)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'̨', Key_RightBracket) \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_Quote)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Comma)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Comma))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Spacebar))) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_onehalf, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_A)) \ + OP(XKB_KEY_oslash, RALT(Key_Semicolon)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_Backtick)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_6)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace se { +namespace ovd { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ovd +} // namespace se +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/se/rus/keymap.h b/src/kaleidoscope/host_keymap/linux/se/rus/keymap.h new file mode 100644 index 0000000000..647ee54e7b --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/se/rus/keymap.h @@ -0,0 +1,436 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: se +// variant: rus + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_5))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_6)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'«', RALT(LSHIFT(Key_8))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(LSHIFT(Key_9))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'÷', RALT(LSHIFT(Key_7))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ё', LSHIFT(Key_Backtick)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_W)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_G)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_V)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Z)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_I)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_J)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_H)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_C)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_Semicolon)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_Quote)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_Equals)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_Y)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_X)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_LeftBracket)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_NonUsPound)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Q)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_W) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_G) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_V) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Z) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_I) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_J) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_H) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_C) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_NonUsBackslashAndPipe) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_Semicolon) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_Quote) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_Equals) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_Y) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_X) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_LeftBracket) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_NonUsPound) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Q) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Backtick) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_e, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_G) \ + OP(XKB_KEY_Cyrillic_ha, Key_H) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_Equals) \ + OP(XKB_KEY_Cyrillic_i, Key_I) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_io, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_shcha, Key_Quote) \ + OP(XKB_KEY_Cyrillic_shorti, Key_J) \ + OP(XKB_KEY_Cyrillic_softsign, Key_X) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_C) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_ve, Key_W) \ + OP(XKB_KEY_Cyrillic_ya, Key_Q) \ + OP(XKB_KEY_Cyrillic_yeru, Key_Y) \ + OP(XKB_KEY_Cyrillic_yu, Key_NonUsPound) \ + OP(XKB_KEY_Cyrillic_ze, Key_Z) \ + OP(XKB_KEY_Cyrillic_zhe, Key_V) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Comma)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Comma))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Spacebar))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_yen, RALT(Key_6)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace se { +namespace rus { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace rus +} // namespace se +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/se/rus_nodeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/se/rus_nodeadkeys/keymap.h new file mode 100644 index 0000000000..40bd06f87c --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/se/rus_nodeadkeys/keymap.h @@ -0,0 +1,436 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: se +// variant: rus_nodeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_5))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_6)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'«', RALT(LSHIFT(Key_8))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(LSHIFT(Key_9))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'÷', RALT(LSHIFT(Key_7))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Ё', LSHIFT(Key_Backtick)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_W)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_G)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_V)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Z)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_I)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_J)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_H)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_C)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_Semicolon)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_Quote)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_Equals)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_Y)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_X)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_LeftBracket)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_NonUsPound)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Q)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_W) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_G) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_V) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Z) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_I) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_J) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_H) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_C) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_NonUsBackslashAndPipe) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_Semicolon) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_Quote) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_Equals) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_Y) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_X) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_LeftBracket) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_NonUsPound) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Q) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Backtick) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_e, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_G) \ + OP(XKB_KEY_Cyrillic_ha, Key_H) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_Equals) \ + OP(XKB_KEY_Cyrillic_i, Key_I) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_io, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_shcha, Key_Quote) \ + OP(XKB_KEY_Cyrillic_shorti, Key_J) \ + OP(XKB_KEY_Cyrillic_softsign, Key_X) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_C) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_ve, Key_W) \ + OP(XKB_KEY_Cyrillic_ya, Key_Q) \ + OP(XKB_KEY_Cyrillic_yeru, Key_Y) \ + OP(XKB_KEY_Cyrillic_yu, Key_NonUsPound) \ + OP(XKB_KEY_Cyrillic_ze, Key_Z) \ + OP(XKB_KEY_Cyrillic_zhe, Key_V) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Comma)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Comma))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Spacebar))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_yen, RALT(Key_6)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace se { +namespace rus_nodeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace rus_nodeadkeys +} // namespace se +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/se/smi/keymap.h b/src/kaleidoscope/host_keymap/linux/se/smi/keymap.h new file mode 100644 index 0000000000..0407916ca6 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/se/smi/keymap.h @@ -0,0 +1,606 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: se +// variant: smi + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(LSHIFT(Key_3))) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(LSHIFT(Key_4))) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_Equals) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_RightBracket))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Equals))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_NonUsPound)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(LSHIFT(Key_3))) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(LSHIFT(Key_4))) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', RALT(LSHIFT(Key_W))) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_Equals) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_RightBracket))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', RALT(Key_W)) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_Backtick) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Equals))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¦', RALT(Key_Backtick)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_6)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_1)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_F)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(LSHIFT(Key_V))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_J)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'­', RALT(LSHIFT(Key_L))) /* U+00ad, XKB_KEY_hyphen, SOFT HYPHEN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_L)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'´', RALT(Key_Equals)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¶', RALT(LSHIFT(Key_6))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_Period))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'»', RALT(LSHIFT(Key_B))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', RALT(LSHIFT(Key_A))) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Á', LSHIFT(Key_Q)) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Â', RALT(LSHIFT(Key_LeftBracket))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Quote))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'É', RALT(LSHIFT(Key_E))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ï', RALT(LSHIFT(Key_I))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_J))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_Semicolon))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ü', RALT(LSHIFT(Key_U))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Ý', RALT(LSHIFT(Key_Y))) /* U+00dd, XKB_KEY_Yacute, LATIN CAPITAL LETTER Y WITH ACUTE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', RALT(Key_A)) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'á', Key_Q) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'â', RALT(Key_LeftBracket)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_Quote)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', RALT(Key_E)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ï', RALT(Key_I)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_Minus)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_Semicolon)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ü', RALT(Key_U)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'ý', RALT(Key_Y)) /* U+00fd, XKB_KEY_yacute, LATIN SMALL LETTER Y WITH ACUTE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Č', LSHIFT(Key_X)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_X) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_NonUsPound)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_NonUsPound) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ŋ', LSHIFT(Key_RightBracket)) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', Key_RightBracket) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Š', LSHIFT(Key_W)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_W) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ž', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_NonUsBackslashAndPipe) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'Ʒ', RALT(LSHIFT(Key_Z))) /* U+01b7, XKB_KEY_EZH, LATIN CAPITAL LETTER EZH */ \ + OP(L'Ǥ', RALT(LSHIFT(Key_H))) \ + OP(L'ǥ', RALT(Key_H)) \ + OP(L'Ǧ', RALT(LSHIFT(Key_G))) /* U+01e6, XKB_KEY_Gcaron, LATIN CAPITAL LETTER G WITH CARON */ \ + OP(L'ǧ', RALT(Key_G)) /* U+01e7, XKB_KEY_gcaron, LATIN SMALL LETTER G WITH CARON */ \ + OP(L'Ǩ', RALT(LSHIFT(Key_K))) \ + OP(L'ǩ', RALT(Key_K)) \ + OP(L'Ǯ', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(L'ǯ', RALT(Key_NonUsBackslashAndPipe)) \ + OP(L'ʒ', RALT(Key_Z)) /* U+0292, XKB_KEY_ezh, LATIN SMALL LETTER EZH */ \ + OP(L'–', RALT(Key_Slash)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Slash))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_N)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_M)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(Key_Comma)) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_N))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_M))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_Comma))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'•', RALT(Key_5)) \ + OP(L'…', RALT(Key_Period)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'™', RALT(LSHIFT(Key_R))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'≠', RALT(LSHIFT(Key_0))) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'≤', RALT(Key_V)) /* U+2264, XKB_KEY_lessthanequal, LESS-THAN OR EQUAL TO */ \ + OP(L'≥', RALT(Key_B)) /* U+2265, XKB_KEY_greaterthanequal, GREATER-THAN OR EQUAL TO */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Aacute, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Agrave, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_X)) \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_EZH, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gcaron, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_W)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_X, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Yacute, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_Q) \ + OP(XKB_KEY_acircumflex, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_acute, RALT(Key_Equals)) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_Quote)) \ + OP(XKB_KEY_agrave, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, RALT(Key_NonUsPound)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_asterisk, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_Equals) \ + OP(XKB_KEY_bar, Key_Backtick) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(Key_Backtick)) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, Key_X) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_1)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_degree, RALT(Key_L)) \ + OP(XKB_KEY_division, RALT(Key_Minus)) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_dstroke, Key_NonUsPound) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, RALT(Key_E)) \ + OP(XKB_KEY_ellipsis, RALT(Key_Period)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_endash, RALT(Key_Slash)) \ + OP(XKB_KEY_eng, Key_RightBracket) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ezh, RALT(Key_Z)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gcaron, RALT(Key_G)) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_greaterthanequal, RALT(Key_B)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hyphen, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idiaeresis, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_N)) \ + OP(XKB_KEY_less, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_lessthanequal, RALT(Key_V)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notequal, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_notsign, RALT(Key_J)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_ordfeminine, RALT(Key_F)) \ + OP(XKB_KEY_oslash, RALT(Key_Semicolon)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_M)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_W) \ + OP(XKB_KEY_section, RALT(Key_6)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_singlelowquotemark, RALT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, RALT(Key_W)) \ + OP(XKB_KEY_x, RALT(Key_X)) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yacute, RALT(Key_Y)) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, Key_NonUsBackslashAndPipe) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace se { +namespace smi { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace smi +} // namespace se +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/se/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/se/standard/keymap.h new file mode 100644 index 0000000000..b874abf62a --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/se/standard/keymap.h @@ -0,0 +1,576 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: se +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_5))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_6)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_A)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_Equals))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_Equals)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_NonUsPound)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_Backtick)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_A))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', LSHIFT(Key_Backtick)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_Backtick))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Quote))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_NonUsPound))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_Semicolon))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_Quote)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_7))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_Semicolon)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ae, RALT(Key_Quote)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Comma)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Comma))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Spacebar))) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_onehalf, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_A)) \ + OP(XKB_KEY_oslash, RALT(Key_Semicolon)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_Backtick)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_6)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace se { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace se +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/se/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/se/sun_type6/keymap.h new file mode 100644 index 0000000000..53da3c4c6f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/se/sun_type6/keymap.h @@ -0,0 +1,465 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: se +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'½', LSHIFT(Key_Backtick)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'Ä', LSHIFT(Key_Quote)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', LSHIFT(Key_LeftBracket)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Ö', LSHIFT(Key_Semicolon)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'ä', Key_Quote) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', Key_LeftBracket) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'ö', Key_Semicolon) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Quote) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_LeftBracket) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_NonUsPound)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Semicolon) \ + OP(XKB_KEY_onehalf, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace se { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace se +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/se/svdvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/se/svdvorak/keymap.h new file mode 100644 index 0000000000..ed3878ce95 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/se/svdvorak/keymap.h @@ -0,0 +1,570 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: se +// variant: svdvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_LeftBracket) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_E)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_W)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsPound) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsPound)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_LeftBracket) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_E)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_W)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsPound) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsPound)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_5))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', LSHIFT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_6)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_A)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_Equals))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_Equals)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_Backtick)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_A))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', LSHIFT(Key_Backtick)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_Backtick))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', LSHIFT(Key_Z)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', LSHIFT(Key_Q)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Quote))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_NonUsPound))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_Semicolon))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Semicolon)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ä', Key_Z) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', Key_Q) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_Quote)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ö', Key_NonUsBackslashAndPipe) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_7))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Œ', RALT(LSHIFT(Key_O))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_O)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_Q)) \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Z) \ + OP(XKB_KEY_ae, RALT(Key_Quote)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_LeftBracket) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_Q) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_colon, LSHIFT(Key_E)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, LSHIFT(Key_4)) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Comma)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Comma))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsPound) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Spacebar))) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_odiaeresis, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_oe, RALT(Key_O)) \ + OP(XKB_KEY_onehalf, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_A)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_paragraph, RALT(Key_Backtick)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(Key_Equals)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_W)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Semicolon)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_yen, RALT(Key_6)) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace se { +namespace svdvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace svdvorak +} // namespace se +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/se/swl/keymap.h b/src/kaleidoscope/host_keymap/linux/se/swl/keymap.h new file mode 100644 index 0000000000..0c1cbd338d --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/se/swl/keymap.h @@ -0,0 +1,407 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: se +// variant: swl + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'\'', Key_NonUsPound) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Minus) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Backtick) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¬', RALT(LSHIFT(Key_Equals))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'±', RALT(Key_Equals)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'´', RALT(Key_NonUsPound)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'¶', RALT(Key_Backtick)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'½', LSHIFT(Key_Backtick)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_Backtick))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'×', RALT(LSHIFT(Key_NonUsPound))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'􌤀', RALT(Key_Q)) \ + OP(L'􌤂', RALT(Key_LeftBracket)) \ + OP(L'􌤃', RALT(Key_W)) \ + OP(L'􌤄', RALT(Key_Quote)) \ + OP(L'􌤅', RALT(Key_Semicolon)) \ + OP(L'􌤆', RALT(Key_O)) \ + OP(L'􌤇', RALT(Key_M)) \ + OP(L'􌤈', RALT(Key_B)) \ + OP(L'􌤉', LSHIFT(Key_0)) \ + OP(L'􌤊', LSHIFT(Key_9)) \ + OP(L'􌤋', LSHIFT(Key_8)) \ + OP(L'􌤌', RALT(Key_E)) \ + OP(L'􌤎', Key_O) \ + OP(L'􌤑', RALT(Key_T)) \ + OP(L'􌤒', RALT(Key_Y)) \ + OP(L'􌤓', RALT(Key_J)) \ + OP(L'􌤔', RALT(Key_K)) \ + OP(L'􌤕', RALT(Key_H)) \ + OP(L'􌤖', RALT(Key_D)) \ + OP(L'􌤗', RALT(Key_F)) \ + OP(L'􌤘', RALT(Key_G)) \ + OP(L'􌤙', RALT(Key_L)) \ + OP(L'􌤚', RALT(Key_S)) \ + OP(L'􌤛', RALT(Key_R)) \ + OP(L'􌤜', RALT(Key_P)) \ + OP(L'􌤞', RALT(Key_I)) \ + OP(L'􌤟', Key_P) \ + OP(L'􌤠', RALT(Key_X)) \ + OP(L'􌤡', RALT(Key_C)) \ + OP(L'􌤢', LSHIFT(Key_J)) \ + OP(L'􌤣', Key_V) \ + OP(L'􌤤', LSHIFT(Key_A)) \ + OP(L'􌤥', Key_Z) \ + OP(L'􌤦', LSHIFT(Key_G)) \ + OP(L'􌤧', LSHIFT(Key_B)) \ + OP(L'􌤨', Key_L) \ + OP(L'􌤩', LSHIFT(Key_D)) \ + OP(L'􌤪', LSHIFT(Key_Q)) \ + OP(L'􌤫', LSHIFT(Key_Semicolon)) \ + OP(L'􌤬', LSHIFT(Key_R)) \ + OP(L'􌤭', LSHIFT(Key_V)) \ + OP(L'􌤮', Key_Quote) \ + OP(L'􌤯', LSHIFT(Key_LeftBracket)) \ + OP(L'􌤰', LSHIFT(Key_W)) \ + OP(L'􌤱', LSHIFT(Key_I)) \ + OP(L'􌤲', LSHIFT(Key_H)) \ + OP(L'􌤳', LSHIFT(Key_X)) \ + OP(L'􌤴', Key_3) \ + OP(L'􌤵', Key_5) \ + OP(L'􌤶', LSHIFT(Key_1)) \ + OP(L'􌤷', LSHIFT(Key_3)) \ + OP(L'􌤸', LSHIFT(Key_5)) \ + OP(L'􌤹', Key_T) \ + OP(L'􌤺', Key_N) \ + OP(L'􌤻', Key_B) \ + OP(L'􌤼', RALT(Key_A)) \ + OP(L'􌤽', Key_LeftBracket) \ + OP(L'􌤾', RALT(Key_N)) \ + OP(L'􌤿', LSHIFT(Key_M)) \ + OP(L'􌥀', RALT(Key_Z)) \ + OP(L'􌥂', Key_J) \ + OP(L'􌥃', LSHIFT(Key_Y)) \ + OP(L'􌥄', LSHIFT(Key_Quote)) \ + OP(L'􌥅', LSHIFT(Key_S)) \ + OP(L'􌥆', LSHIFT(Key_O)) \ + OP(L'􌥇', LSHIFT(Key_E)) \ + OP(L'􌥈', LSHIFT(Key_L)) \ + OP(L'􌥉', Key_C) \ + OP(L'􌥊', LSHIFT(Key_T)) \ + OP(L'􌥋', LSHIFT(Key_C)) \ + OP(L'􌥌', LSHIFT(Key_N)) \ + OP(L'􌥎', LSHIFT(Key_K)) \ + OP(L'􌥑', Key_I) \ + OP(L'􌥒', Key_Y) \ + OP(L'􌥓', Key_1) \ + OP(L'􌥔', Key_2) \ + OP(L'􌥕', Key_4) \ + OP(L'􌥖', Key_6) \ + OP(L'􌥗', LSHIFT(Key_2)) \ + OP(L'􌥘', LSHIFT(Key_4)) \ + OP(L'􌥙', LSHIFT(Key_6)) \ + OP(L'􌥚', Key_G) \ + OP(L'􌥛', Key_M) \ + OP(L'􌥜', RALT(Key_V)) \ + OP(L'􌥞', RALT(Key_U)) \ + OP(L'􌥟', LSHIFT(Key_Z)) \ + OP(L'􌥠', Key_7) \ + OP(L'􌥡', LSHIFT(Key_P)) \ + OP(L'􌥢', RALT(LSHIFT(Key_1))) \ + OP(L'􌥣', RALT(LSHIFT(Key_2))) \ + OP(L'􌥤', RALT(LSHIFT(Key_8))) \ + OP(L'􌥥', RALT(LSHIFT(Key_9))) \ + OP(L'􌥦', RALT(LSHIFT(Key_5))) \ + OP(L'􌥧', RALT(LSHIFT(Key_6))) \ + OP(L'􌥨', RALT(LSHIFT(Key_0))) \ + OP(L'􌥩', LSHIFT(Key_7)) \ + OP(L'􌥪', RALT(LSHIFT(Key_7))) \ + OP(L'􌥫', Key_X) \ + OP(L'􌥬', Key_Q) \ + OP(L'􌥭', RALT(LSHIFT(Key_E))) \ + OP(L'􌥮', RALT(LSHIFT(Key_V))) \ + OP(L'􌥯', Key_H) \ + OP(L'􌥰', Key_Semicolon) \ + OP(L'􌥱', Key_W) \ + OP(L'􌥲', Key_S) \ + OP(L'􌥳', Key_A) \ + OP(L'􌥴', Key_0) \ + OP(L'􌥵', LSHIFT(Key_F)) \ + OP(L'􌥶', Key_F) \ + OP(L'􌥷', LSHIFT(Key_U)) \ + OP(L'􌥸', Key_U) \ + OP(L'􌥹', Key_D) \ + OP(L'􌥺', RALT(LSHIFT(Key_K))) \ + OP(L'􌥻', Key_9) \ + OP(L'􌥼', Key_8) \ + OP(L'􌥽', RALT(Key_2)) \ + OP(L'􌥾', RALT(Key_3)) \ + OP(L'􌥿', RALT(Key_5)) \ + OP(L'􌦀', RALT(Key_6)) \ + OP(L'􌦂', RALT(Key_7)) \ + OP(L'􌦃', RALT(LSHIFT(Key_3))) \ + OP(L'􌦄', RALT(LSHIFT(Key_4))) \ + OP(L'􌦅', Key_K) \ + OP(L'􌦆', Key_R) \ + OP(L'􌦇', Key_E) \ + OP(L'􌦈', RALT(Key_1)) \ + OP(L'􌦉', RALT(Key_8)) \ + OP(L'􌦊', RALT(Key_4)) \ + OP(L'􌦋', RALT(Key_9)) \ + OP(L'􌦌', RALT(Key_0)) \ + OP(L'􌦎', RALT(LSHIFT(Key_X))) \ + OP(L'􌦑', RALT(LSHIFT(Key_Semicolon))) \ + OP(L'􌦒', RALT(LSHIFT(Key_M))) \ + OP(L'􌦓', RALT(LSHIFT(Key_R))) \ + OP(L'􌦔', RALT(LSHIFT(Key_F))) \ + OP(L'􌦕', RALT(LSHIFT(Key_T))) \ + OP(L'􌦖', RALT(LSHIFT(Key_G))) \ + OP(L'􌦗', RALT(LSHIFT(Key_I))) \ + OP(L'􌦘', RALT(LSHIFT(Key_H))) \ + OP(L'􌦙', RALT(LSHIFT(Key_D))) \ + OP(L'􌦚', RALT(LSHIFT(Key_Z))) \ + OP(L'􌦛', RALT(LSHIFT(Key_Y))) \ + OP(L'􌦜', RALT(LSHIFT(Key_S))) \ + OP(L'􌦞', RALT(LSHIFT(Key_W))) \ + OP(L'􌦟', RALT(LSHIFT(Key_C))) \ + OP(L'􌦠', RALT(LSHIFT(Key_O))) \ + OP(L'􌦡', RALT(LSHIFT(Key_Q))) \ + OP(L'􌦢', RALT(LSHIFT(Key_J))) \ + OP(L'􌦣', RALT(LSHIFT(Key_U))) \ + OP(L'􌦤', RALT(LSHIFT(Key_A))) \ + OP(L'􌦥', RALT(LSHIFT(Key_L))) \ + OP(L'􌦦', RALT(LSHIFT(Key_B))) \ + OP(L'􌦧', RALT(LSHIFT(Key_N))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_acute, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_apostrophe, Key_NonUsPound) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Comma)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_RightBracket)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, Key_RightBracket) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, LSHIFT(Key_Equals)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Comma))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Spacebar))) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_onehalf, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_paragraph, RALT(Key_Backtick)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, Key_Minus) \ + OP(XKB_KEY_plusminus, RALT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_section, Key_Backtick) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace se { +namespace swl { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace swl +} // namespace se +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/se/us_dvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/se/us_dvorak/keymap.h new file mode 100644 index 0000000000..0f46808886 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/se/us_dvorak/keymap.h @@ -0,0 +1,562 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: se +// variant: us_dvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_NonUsPound)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_NonUsPound) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_W)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Quote)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_NonUsPound)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_NonUsPound) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_W)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Quote)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_I))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_4))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsPound))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_Semicolon))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_I)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Minus)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(Key_O)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_Equals)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'½', RALT(Key_7)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_8)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(Key_LeftBracket)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_A))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', LSHIFT(Key_Z)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', LSHIFT(Key_Q)) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Slash))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_W))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'É', RALT(LSHIFT(Key_D))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(LSHIFT(Key_G))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_H))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_L))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ó', RALT(LSHIFT(Key_S))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'Ø', RALT(LSHIFT(Key_P))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', RALT(LSHIFT(Key_F))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', RALT(LSHIFT(Key_T))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_K))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Semicolon)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', RALT(Key_A)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', Key_Z) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', Key_Q) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_Slash)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_W)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', RALT(Key_D)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', RALT(Key_G)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ð', RALT(Key_H)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', RALT(Key_L)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ó', RALT(Key_S)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', Key_NonUsBackslashAndPipe) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ø', RALT(Key_P)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ú', RALT(Key_F)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', RALT(Key_T)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_K)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Œ', RALT(LSHIFT(Key_V))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_V)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'‘', RALT(Key_9)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_0)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_Minus))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_Equals))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, LSHIFT(Key_Q)) \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_H))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_K))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_A)) \ + OP(XKB_KEY_adiaeresis, Key_Z) \ + OP(XKB_KEY_ae, RALT(Key_Slash)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Backtick) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, Key_Q) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_bar, RALT(Key_Quote)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, Key_Minus) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_ccedilla, RALT(Key_W)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_colon, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_copyright, RALT(Key_I)) \ + OP(XKB_KEY_currency, RALT(Key_4)) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_E)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Q)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_9))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_E))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_5))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_NonUsBackslashAndPipe)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_2))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_Z)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_eacute, RALT(Key_D)) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_eth, RALT(Key_H)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Minus)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Equals)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_iacute, RALT(Key_G)) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_9)) \ + OP(XKB_KEY_less, LSHIFT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_ntilde, RALT(Key_L)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_oacute, RALT(Key_S)) \ + OP(XKB_KEY_odiaeresis, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_oe, RALT(Key_V)) \ + OP(XKB_KEY_onehalf, RALT(Key_7)) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_oslash, RALT(Key_P)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_plus, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_questiondown, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_registered, RALT(Key_O)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_0)) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_semicolon, Key_NonUsPound) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Semicolon)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_thorn, RALT(Key_K)) \ + OP(XKB_KEY_threequarters, RALT(Key_8)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_uacute, RALT(Key_F)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_T)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace se { +namespace us_dvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace us_dvorak +} // namespace se +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/si/alternatequotes/keymap.h b/src/kaleidoscope/host_keymap/linux/si/alternatequotes/keymap.h new file mode 100644 index 0000000000..e91b184408 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/si/alternatequotes/keymap.h @@ -0,0 +1,565 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: si +// variant: alternatequotes + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(LSHIFT(Key_7))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_1))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(LSHIFT(Key_7))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_1))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¨', LSHIFT(Key_Backtick)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_D)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', Key_Backtick) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_S)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ć', LSHIFT(Key_Quote)) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', Key_Quote) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', LSHIFT(Key_Semicolon)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Semicolon) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_RightBracket)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_RightBracket) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Š', LSHIFT(Key_LeftBracket)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_LeftBracket) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ž', LSHIFT(Key_NonUsPound)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_NonUsPound) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, Key_Quote) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ccaron, Key_Semicolon) \ + OP(XKB_KEY_cedilla, Key_Backtick) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(LSHIFT(Key_7))) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_D)) \ + OP(XKB_KEY_guillemotright, RALT(Key_S)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_LeftBracket) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + OP(XKB_KEY_zcaron, Key_NonUsPound) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace si { +namespace alternatequotes { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace alternatequotes +} // namespace si +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/si/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/si/standard/keymap.h new file mode 100644 index 0000000000..154b0279e8 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/si/standard/keymap.h @@ -0,0 +1,569 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: si +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(LSHIFT(Key_7))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_1))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(LSHIFT(Key_7))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_1))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¨', LSHIFT(Key_Backtick)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(LSHIFT(Key_D))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', Key_Backtick) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_S))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ć', LSHIFT(Key_Quote)) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', Key_Quote) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', LSHIFT(Key_Semicolon)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Semicolon) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_RightBracket)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_RightBracket) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Š', LSHIFT(Key_LeftBracket)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_LeftBracket) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ž', LSHIFT(Key_NonUsPound)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_NonUsPound) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_D)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_S)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, Key_Quote) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ccaron, Key_Semicolon) \ + OP(XKB_KEY_cedilla, Key_Backtick) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_S)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(LSHIFT(Key_7))) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_D)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_LeftBracket) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + OP(XKB_KEY_zcaron, Key_NonUsPound) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace si { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace si +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/si/us/keymap.h b/src/kaleidoscope/host_keymap/linux/si/us/keymap.h new file mode 100644 index 0000000000..a785c737f1 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/si/us/keymap.h @@ -0,0 +1,569 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: si +// variant: us + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(LSHIFT(Key_7))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_1))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Minus) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Equals) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Comma)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_V)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Q)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_M)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(LSHIFT(Key_7))) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_1))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¤', RALT(Key_NonUsPound)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'¨', LSHIFT(Key_Backtick)) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(LSHIFT(Key_D))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_5))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¸', Key_Backtick) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_S))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ć', LSHIFT(Key_Quote)) /* U+0106, XKB_KEY_Cacute, LATIN CAPITAL LETTER C WITH ACUTE */ \ + OP(L'ć', Key_Quote) /* U+0107, XKB_KEY_cacute, LATIN SMALL LETTER C WITH ACUTE */ \ + OP(L'Č', LSHIFT(Key_Semicolon)) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', Key_Semicolon) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', LSHIFT(Key_RightBracket)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_RightBracket) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'Š', LSHIFT(Key_LeftBracket)) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', Key_LeftBracket) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ž', LSHIFT(Key_NonUsPound)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_NonUsPound) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'ˇ', RALT(LSHIFT(Key_2))) /* U+02c7, XKB_KEY_caron, CARON */ \ + OP(L'˘', RALT(LSHIFT(Key_4))) /* U+02d8, XKB_KEY_breve, BREVE */ \ + OP(L'˙', RALT(LSHIFT(Key_8))) /* U+02d9, XKB_KEY_abovedot, DOT ABOVE */ \ + OP(L'˛', RALT(LSHIFT(Key_6))) /* U+02db, XKB_KEY_ogonek, OGONEK */ \ + OP(L'˝', RALT(LSHIFT(Key_0))) /* U+02dd, XKB_KEY_doubleacute, DOUBLE ACUTE ACCENT */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'–', RALT(LSHIFT(Key_Slash))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Slash)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_Z)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_X)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_D)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(Key_S)) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cacute, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abovedot, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, Key_Minus) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_M)) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_at, RALT(Key_V)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Q)) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_breve, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cacute, Key_Quote) \ + OP(XKB_KEY_caron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_ccaron, Key_Semicolon) \ + OP(XKB_KEY_cedilla, Key_Backtick) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_8)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_5)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_9)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_4)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_2)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_0)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_6)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_1)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_diaeresis, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubleacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_doublelowquotemark, RALT(Key_S)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(Key_Slash)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(LSHIFT(Key_7))) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_D)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_Z)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ogonek, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_Equals) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_X)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_LeftBracket) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, Key_NonUsPound) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace si { +namespace us { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace us +} // namespace si +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/sk/bksl/keymap.h b/src/kaleidoscope/host_keymap/linux/sk/bksl/keymap.h new file mode 100644 index 0000000000..9ca540b9f5 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/sk/bksl/keymap.h @@ -0,0 +1,548 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: sk +// variant: bksl + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', RALT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Semicolon)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_J)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_RightBracket)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', RALT(LSHIFT(Key_NonUsPound))) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_1) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Backtick) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Minus) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_H)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_9)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_A)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', RALT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Semicolon)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_J)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_RightBracket)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', RALT(LSHIFT(Key_NonUsPound))) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_1) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Backtick) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Minus) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_H)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_9)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_A)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Quote) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Z)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_RightBracket))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(LSHIFT(Key_Quote))) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_8) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', Key_RightBracket) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'é', Key_0) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_9) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ô', Key_Semicolon) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'÷', RALT(LSHIFT(Key_LeftBracket))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ú', Key_LeftBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ý', Key_7) /* U+00fd, XKB_KEY_yacute, LATIN SMALL LETTER Y WITH ACUTE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'č', Key_4) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ľ', Key_2) /* U+013e, XKB_KEY_lcaron, LATIN SMALL LETTER L WITH CARON */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'š', Key_3) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'ť', Key_5) /* U+0165, XKB_KEY_tcaron, LATIN SMALL LETTER T WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ž', Key_6) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_8) \ + OP(XKB_KEY_adiaeresis, Key_RightBracket) \ + OP(XKB_KEY_ampersand, RALT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_J)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(Key_A)) \ + OP(XKB_KEY_asterisk, RALT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_9)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, Key_4) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_4))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, LSHIFT(Key_Equals)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Minus))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Equals)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_6))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_Z)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_0) \ + OP(XKB_KEY_equal, Key_Minus) \ + OP(XKB_KEY_exclam, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_H)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_9) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_lcaron, Key_2) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, RALT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, Key_Semicolon) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_parenright, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_percent, RALT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_1) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_3) \ + OP(XKB_KEY_section, Key_Quote) \ + OP(XKB_KEY_semicolon, Key_Backtick) \ + OP(XKB_KEY_slash, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_tcaron, Key_5) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yacute, Key_7) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + OP(XKB_KEY_zcaron, Key_6) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace sk { +namespace bksl { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace bksl +} // namespace sk +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/sk/qwerty/keymap.h b/src/kaleidoscope/host_keymap/linux/sk/qwerty/keymap.h new file mode 100644 index 0000000000..fc369c1be2 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/sk/qwerty/keymap.h @@ -0,0 +1,550 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: sk +// variant: qwerty + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', RALT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Semicolon)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_J)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_RightBracket)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_NonUsPound)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_1) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Backtick) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Minus) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_H)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_9)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_A)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', RALT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Semicolon)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_J)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_RightBracket)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_NonUsPound)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_1) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Backtick) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Minus) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_H)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_9)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_A)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Quote) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Z)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_RightBracket))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(LSHIFT(Key_Quote))) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_8) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', Key_RightBracket) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'é', Key_0) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_9) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ô', Key_Semicolon) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'÷', RALT(LSHIFT(Key_LeftBracket))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ú', Key_LeftBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ý', Key_7) /* U+00fd, XKB_KEY_yacute, LATIN SMALL LETTER Y WITH ACUTE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'č', Key_4) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ľ', Key_2) /* U+013e, XKB_KEY_lcaron, LATIN SMALL LETTER L WITH CARON */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'ň', Key_NonUsPound) /* U+0148, XKB_KEY_ncaron, LATIN SMALL LETTER N WITH CARON */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'š', Key_3) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'ť', Key_5) /* U+0165, XKB_KEY_tcaron, LATIN SMALL LETTER T WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ž', Key_6) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_8) \ + OP(XKB_KEY_adiaeresis, Key_RightBracket) \ + OP(XKB_KEY_ampersand, RALT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_J)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(Key_A)) \ + OP(XKB_KEY_asterisk, RALT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_9)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, Key_4) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_4))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, LSHIFT(Key_Equals)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Minus))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Equals)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_6))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_Z)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_0) \ + OP(XKB_KEY_equal, Key_Minus) \ + OP(XKB_KEY_exclam, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_H)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_9) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_lcaron, Key_2) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, RALT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_ncaron, Key_NonUsPound) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, Key_Semicolon) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_percent, RALT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_1) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_3) \ + OP(XKB_KEY_section, Key_Quote) \ + OP(XKB_KEY_semicolon, Key_Backtick) \ + OP(XKB_KEY_slash, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_tcaron, Key_5) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yacute, Key_7) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, Key_6) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace sk { +namespace qwerty { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace qwerty +} // namespace sk +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/sk/qwerty_bksl/keymap.h b/src/kaleidoscope/host_keymap/linux/sk/qwerty_bksl/keymap.h new file mode 100644 index 0000000000..076fa8ec12 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/sk/qwerty_bksl/keymap.h @@ -0,0 +1,548 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: sk +// variant: qwerty_bksl + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', RALT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Semicolon)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_J)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_RightBracket)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', RALT(LSHIFT(Key_NonUsPound))) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_1) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Backtick) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Minus) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_H)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_9)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_A)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', RALT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Semicolon)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_J)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_RightBracket)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', RALT(LSHIFT(Key_NonUsPound))) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_1) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Backtick) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Minus) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_H)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_9)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_A)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Quote) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Z)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_RightBracket))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(LSHIFT(Key_Quote))) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_8) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', Key_RightBracket) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'é', Key_0) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_9) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ô', Key_Semicolon) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'÷', RALT(LSHIFT(Key_LeftBracket))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ú', Key_LeftBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ý', Key_7) /* U+00fd, XKB_KEY_yacute, LATIN SMALL LETTER Y WITH ACUTE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'č', Key_4) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ľ', Key_2) /* U+013e, XKB_KEY_lcaron, LATIN SMALL LETTER L WITH CARON */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'š', Key_3) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'ť', Key_5) /* U+0165, XKB_KEY_tcaron, LATIN SMALL LETTER T WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ž', Key_6) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_8) \ + OP(XKB_KEY_adiaeresis, Key_RightBracket) \ + OP(XKB_KEY_ampersand, RALT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_J)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(Key_A)) \ + OP(XKB_KEY_asterisk, RALT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_9)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, Key_4) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_4))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, LSHIFT(Key_Equals)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Minus))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Equals)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_6))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_Z)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_0) \ + OP(XKB_KEY_equal, Key_Minus) \ + OP(XKB_KEY_exclam, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_H)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_9) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_lcaron, Key_2) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, RALT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, Key_Semicolon) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_parenright, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_percent, RALT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_1) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_3) \ + OP(XKB_KEY_section, Key_Quote) \ + OP(XKB_KEY_semicolon, Key_Backtick) \ + OP(XKB_KEY_slash, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_tcaron, Key_5) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yacute, Key_7) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, Key_6) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace sk { +namespace qwerty_bksl { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace qwerty_bksl +} // namespace sk +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/sk/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/sk/standard/keymap.h new file mode 100644 index 0000000000..64b3aecb55 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/sk/standard/keymap.h @@ -0,0 +1,550 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: sk +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', RALT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Semicolon)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_J)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_RightBracket)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_NonUsPound)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_1) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Backtick) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Minus) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_H)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_9)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_A)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', RALT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Semicolon)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_J)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_RightBracket)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_NonUsPound)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_1) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Backtick) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Minus) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_H)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_9)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_A)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Quote) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Z)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'×', RALT(LSHIFT(Key_RightBracket))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(LSHIFT(Key_Quote))) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_8) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', Key_RightBracket) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'é', Key_0) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_9) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ô', Key_Semicolon) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'÷', RALT(LSHIFT(Key_LeftBracket))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ú', Key_LeftBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ý', Key_7) /* U+00fd, XKB_KEY_yacute, LATIN SMALL LETTER Y WITH ACUTE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'č', Key_4) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ľ', Key_2) /* U+013e, XKB_KEY_lcaron, LATIN SMALL LETTER L WITH CARON */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'ň', Key_NonUsPound) /* U+0148, XKB_KEY_ncaron, LATIN SMALL LETTER N WITH CARON */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'š', Key_3) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'ť', Key_5) /* U+0165, XKB_KEY_tcaron, LATIN SMALL LETTER T WITH CARON */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'ž', Key_6) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_8) \ + OP(XKB_KEY_adiaeresis, Key_RightBracket) \ + OP(XKB_KEY_ampersand, RALT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_J)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(Key_A)) \ + OP(XKB_KEY_asterisk, RALT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_9)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, Key_4) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_4))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, LSHIFT(Key_Equals)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Minus))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Equals)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_6))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_1))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_Z)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_0) \ + OP(XKB_KEY_equal, Key_Minus) \ + OP(XKB_KEY_exclam, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_H)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_9) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_lcaron, Key_2) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, RALT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_ncaron, Key_NonUsPound) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, Key_Semicolon) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_percent, RALT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_1) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_3) \ + OP(XKB_KEY_section, Key_Quote) \ + OP(XKB_KEY_semicolon, Key_Backtick) \ + OP(XKB_KEY_slash, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_tcaron, Key_5) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yacute, Key_7) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Y) \ + OP(XKB_KEY_zcaron, Key_6) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace sk { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace sk +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/sk/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/sk/sun_type6/keymap.h new file mode 100644 index 0000000000..74ff1013ab --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/sk/sun_type6/keymap.h @@ -0,0 +1,494 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: sk +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', RALT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Semicolon)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_P)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', RALT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', RALT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_1) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Backtick) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_Z)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Minus) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_X)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_1))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', RALT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Semicolon)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', RALT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_P)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', RALT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', RALT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_1) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Slash) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Backtick) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_Z)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Minus) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_X)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Comma)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Z)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Y)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_G)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Slash)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Z) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Y) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_B)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_W)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_N)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_1))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', Key_Quote) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'×', RALT(Key_RightBracket)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'ß', RALT(Key_Quote)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', Key_8) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', Key_RightBracket) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'é', Key_0) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', Key_9) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ô', Key_Semicolon) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'÷', RALT(Key_LeftBracket)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ú', Key_LeftBracket) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ý', Key_7) /* U+00fd, XKB_KEY_yacute, LATIN SMALL LETTER Y WITH ACUTE */ \ + OP(L'č', Key_4) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Đ', RALT(Key_D)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_S)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'ľ', Key_2) /* U+013e, XKB_KEY_lcaron, LATIN SMALL LETTER L WITH CARON */ \ + OP(L'Ł', RALT(Key_L)) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_K)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'ň', Key_NonUsPound) /* U+0148, XKB_KEY_ncaron, LATIN SMALL LETTER N WITH CARON */ \ + OP(L'š', Key_3) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'ť', Key_5) /* U+0165, XKB_KEY_tcaron, LATIN SMALL LETTER T WITH CARON */ \ + OP(L'ž', Key_6) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(Key_D)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(Key_L)) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Y)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, Key_8) \ + OP(XKB_KEY_adiaeresis, Key_RightBracket) \ + OP(XKB_KEY_ampersand, RALT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_P)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_asterisk, RALT(Key_8)) \ + OP(XKB_KEY_at, RALT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, RALT(Key_W)) \ + OP(XKB_KEY_braceleft, RALT(Key_B)) \ + OP(XKB_KEY_braceright, RALT(Key_N)) \ + OP(XKB_KEY_bracketleft, RALT(Key_F)) \ + OP(XKB_KEY_bracketright, RALT(Key_G)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, Key_4) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Equals) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_4))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, LSHIFT(Key_Equals)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_Minus)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_6))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_division, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_dstroke, RALT(Key_S)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_0) \ + OP(XKB_KEY_equal, Key_Minus) \ + OP(XKB_KEY_exclam, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, Key_9) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_lcaron, Key_2) \ + OP(XKB_KEY_less, RALT(Key_Z)) \ + OP(XKB_KEY_lstroke, RALT(Key_K)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Slash) \ + OP(XKB_KEY_multiply, RALT(Key_RightBracket)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_ncaron, Key_NonUsPound) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, Key_Semicolon) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, RALT(Key_9)) \ + OP(XKB_KEY_parenright, RALT(Key_0)) \ + OP(XKB_KEY_percent, RALT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, Key_1) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, Key_3) \ + OP(XKB_KEY_section, Key_Quote) \ + OP(XKB_KEY_semicolon, Key_Backtick) \ + OP(XKB_KEY_slash, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Quote)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_tcaron, Key_5) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Z) \ + OP(XKB_KEY_yacute, Key_7) \ + OP(XKB_KEY_z, Key_Y) \ + OP(XKB_KEY_zcaron, Key_6) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace sk { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace sk +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/sn/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/sn/standard/keymap.h new file mode 100644 index 0000000000..0a403d12a2 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/sn/standard/keymap.h @@ -0,0 +1,582 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: sn +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Backtick)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Backtick)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_1)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_Slash)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_RightBracket)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_6))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_5))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_W)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'¯', RALT(LSHIFT(Key_8))) /* U+00af, XKB_KEY_macron, MACRON */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'´', RALT(Key_Quote)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', Key_NonUsPound) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¸', RALT(LSHIFT(Key_3))) /* U+00b8, XKB_KEY_cedilla, CEDILLA */ \ + OP(L'º', RALT(LSHIFT(Key_Semicolon))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¾', RALT(LSHIFT(Key_Equals))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(Key_M)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'À', RALT(LSHIFT(Key_0))) /* U+00c0, XKB_KEY_Agrave, LATIN CAPITAL LETTER A WITH GRAVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Q))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_9))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'È', RALT(LSHIFT(Key_7))) /* U+00c8, XKB_KEY_Egrave, LATIN CAPITAL LETTER E WITH GRAVE */ \ + OP(L'É', RALT(LSHIFT(Key_2))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', LSHIFT(Key_Quote)) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'æ', RALT(Key_Q)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ê', RALT(LSHIFT(Key_RightBracket))) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', Key_Quote) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ÿ', RALT(LSHIFT(Key_Minus))) /* U+00ff, XKB_KEY_ydiaeresis, LATIN SMALL LETTER Y WITH DIAERESIS */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ı', RALT(LSHIFT(Key_I))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_L))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_L)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', LSHIFT(Key_LeftBracket)) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', Key_LeftBracket) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_A))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'↑', RALT(LSHIFT(Key_U))) /* U+2191, XKB_KEY_uparrow, UPWARDS ARROW */ \ + OP(L'→', RALT(Key_I)) /* U+2192, XKB_KEY_rightarrow, RIGHTWARDS ARROW */ \ + OP(L'↓', RALT(Key_U)) /* U+2193, XKB_KEY_downarrow, DOWNWARDS ARROW */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Agrave, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_Egrave, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_acute, RALT(Key_Quote)) \ + OP(XKB_KEY_ae, RALT(Key_Q)) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_1)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_cedilla, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_currency, RALT(Key_RightBracket)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_7)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_downarrow, RALT(Key_U)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_ecircumflex, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_eng, Key_LeftBracket) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_exclamdown, RALT(Key_Slash)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_NonUsPound)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_W)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_L)) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_macron, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, Key_NonUsPound) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_ntilde, Key_Quote) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_questiondown, RALT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightarrow, RALT(Key_I)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, Key_8) \ + OP(XKB_KEY_uparrow, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_ydiaeresis, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace sn { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace sn +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/sy/ku/keymap.h b/src/kaleidoscope/host_keymap/linux/sy/ku/keymap.h new file mode 100644 index 0000000000..dcf0fee134 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/sy/ku/keymap.h @@ -0,0 +1,552 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: sy +// variant: ku + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_Backtick) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_2)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_Minus) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_NonUsPound) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_NonUsPound)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_1)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_LeftBracket)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_LeftBracket) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_Backtick) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_2)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_Minus) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_NonUsPound) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_NonUsPound)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_1)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_LeftBracket)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_LeftBracket) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_2)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_S)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_F)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Semicolon)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Â', RALT(LSHIFT(Key_A))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ç', LSHIFT(Key_Period)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ê', LSHIFT(Key_Comma)) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Î', LSHIFT(Key_Quote)) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ô', RALT(LSHIFT(Key_O))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', RALT(LSHIFT(Key_Comma))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'Û', LSHIFT(Key_RightBracket)) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'â', RALT(Key_A)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ç', Key_Period) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', LSHIFT(Key_Backtick)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ê', Key_Comma) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'î', Key_Quote) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ô', RALT(Key_O)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', RALT(Key_Comma)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'û', Key_RightBracket) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ğ', RALT(LSHIFT(Key_LeftBracket))) /* U+011e, XKB_KEY_Gbreve, LATIN CAPITAL LETTER G WITH BREVE */ \ + OP(L'ğ', RALT(Key_LeftBracket)) /* U+011f, XKB_KEY_gbreve, LATIN SMALL LETTER G WITH BREVE */ \ + OP(L'ı', RALT(Key_I)) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ş', LSHIFT(Key_Semicolon)) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', Key_Semicolon) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'₺', RALT(Key_T)) \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Ecircumflex, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gbreve, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acircumflex, RALT(Key_A)) \ + OP(XKB_KEY_acute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_2)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, Key_Minus) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_Equals)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_Period) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_comma, Key_NonUsPound) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Slash)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_ecircumflex, Key_Comma) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gbreve, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_grave, RALT(Key_NonUsPound)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_1)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, Key_Quote) \ + OP(XKB_KEY_idotless, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, RALT(Key_O)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_Comma)) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_F)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_4)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, Key_Backtick) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, Key_Semicolon) \ + OP(XKB_KEY_section, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_2)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, Key_RightBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_LeftBracket) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace sy { +namespace ku { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ku +} // namespace sy +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/sy/ku_alt/keymap.h b/src/kaleidoscope/host_keymap/linux/sy/ku_alt/keymap.h new file mode 100644 index 0000000000..ff1edef4dd --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/sy/ku_alt/keymap.h @@ -0,0 +1,592 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: sy +// variant: ku_alt + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'Â', RALT(LSHIFT(Key_A))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ê', RALT(LSHIFT(Key_E))) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', RALT(LSHIFT(Key_O))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Û', RALT(LSHIFT(Key_U))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'â', RALT(Key_A)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ê', RALT(Key_E)) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', RALT(Key_O)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'û', RALT(Key_U)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ğ', RALT(LSHIFT(Key_G))) /* U+011e, XKB_KEY_Gbreve, LATIN CAPITAL LETTER G WITH BREVE */ \ + OP(L'ğ', RALT(Key_G)) /* U+011f, XKB_KEY_gbreve, LATIN SMALL LETTER G WITH BREVE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ş', RALT(LSHIFT(Key_S))) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', RALT(Key_S)) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'─', RALT(Key_Minus)) /* U+2500, XKB_KEY_horizlinescan5, BOX DRAWINGS LIGHT HORIZONTAL */ \ + OP(L'│', RALT(LSHIFT(Key_Minus))) /* U+2502, XKB_KEY_vertbar, BOX DRAWINGS LIGHT VERTICAL */ \ + OP(L'┌', RALT(LSHIFT(Key_7))) /* U+250c, XKB_KEY_upleftcorner, BOX DRAWINGS LIGHT DOWN AND RIGHT */ \ + OP(L'┐', RALT(LSHIFT(Key_0))) /* U+2510, XKB_KEY_uprightcorner, BOX DRAWINGS LIGHT DOWN AND LEFT */ \ + OP(L'└', RALT(Key_7)) /* U+2514, XKB_KEY_lowleftcorner, BOX DRAWINGS LIGHT UP AND RIGHT */ \ + OP(L'┘', RALT(Key_0)) /* U+2518, XKB_KEY_lowrightcorner, BOX DRAWINGS LIGHT UP AND LEFT */ \ + OP(L'├', RALT(Key_8)) /* U+251c, XKB_KEY_leftt, BOX DRAWINGS LIGHT VERTICAL AND RIGHT */ \ + OP(L'┤', RALT(Key_9)) /* U+2524, XKB_KEY_rightt, BOX DRAWINGS LIGHT VERTICAL AND LEFT */ \ + OP(L'┬', RALT(LSHIFT(Key_8))) /* U+252c, XKB_KEY_topt, BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */ \ + OP(L'┴', RALT(LSHIFT(Key_9))) /* U+2534, XKB_KEY_bott, BOX DRAWINGS LIGHT UP AND HORIZONTAL */ \ + OP(L'┼', RALT(Key_Equals)) /* U+253c, XKB_KEY_crossinglines, BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Ecircumflex, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gbreve, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acircumflex, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_bott, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_crossinglines, RALT(Key_Equals)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_ecircumflex, RALT(Key_E)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gbreve, RALT(Key_G)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_horizlinescan5, RALT(Key_Minus)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_leftt, RALT(Key_8)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lowleftcorner, RALT(Key_7)) \ + OP(XKB_KEY_lowrightcorner, RALT(Key_0)) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_rightt, RALT(Key_9)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_topt, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_upleftcorner, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_uprightcorner, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_vertbar, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace sy { +namespace ku_alt { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ku_alt +} // namespace sy +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/sy/ku_f/keymap.h b/src/kaleidoscope/host_keymap/linux/sy/ku_f/keymap.h new file mode 100644 index 0000000000..1c01cd3e47 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/sy/ku_f/keymap.h @@ -0,0 +1,548 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: sy +// variant: ku_f + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Backtick) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Slash) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Minus) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_F)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_Comma)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_V)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_Y)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Q)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_O)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_R)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_Z)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_J)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_K)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_I)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_T)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_LeftBracket)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_U)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_M)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_H)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_C)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_RightBracket)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_E)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Semicolon)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_N)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_F) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_Comma) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_V) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_Y) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Q) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_O) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_R) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_Z) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_J) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_K) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_I) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_T) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_LeftBracket) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_U) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_M) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_H) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_C) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_RightBracket) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_E) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Semicolon) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_N) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Backtick) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Slash) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Minus) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_F)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_Comma)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_V)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_Y)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Q)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_O)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_R)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_Z)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_J)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_K)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_I)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_T)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_LeftBracket)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_U)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_M)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_H)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_C)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_RightBracket)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_E)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Semicolon)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_N)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_F) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_Comma) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_V) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_Y) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Q) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_O) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_R) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_Z) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_J) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_K) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_I) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_T) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_LeftBracket) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_U) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_M) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_H) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_C) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_RightBracket) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_E) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Semicolon) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_N) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Comma))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_V)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_P)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(Key_Y)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_M)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_V))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_U)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_O)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Semicolon)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_K)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Slash)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Â', RALT(LSHIFT(Key_F))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ç', LSHIFT(Key_B)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ê', LSHIFT(Key_X)) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Î', LSHIFT(Key_S)) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ô', RALT(LSHIFT(Key_T))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', RALT(LSHIFT(Key_X))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Û', LSHIFT(Key_A)) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', RALT(LSHIFT(Key_A))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'â', RALT(Key_F)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ç', Key_B) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ê', Key_X) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'î', Key_S) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ô', RALT(Key_T)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', RALT(Key_X)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_Period)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'û', Key_A) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', RALT(Key_A)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Ğ', RALT(LSHIFT(Key_E))) /* U+011e, XKB_KEY_Gbreve, LATIN CAPITAL LETTER G WITH BREVE */ \ + OP(L'ğ', RALT(Key_E)) /* U+011f, XKB_KEY_gbreve, LATIN SMALL LETTER G WITH BREVE */ \ + OP(L'İ', RALT(LSHIFT(Key_S))) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'Ş', LSHIFT(Key_Quote)) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', Key_Quote) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'“', RALT(Key_C)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_D)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'₺', RALT(Key_H)) \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_V)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_B)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_Ecircumflex, LSHIFT(Key_X)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_D)) \ + OP(XKB_KEY_F, LSHIFT(Key_Q)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_W)) \ + OP(XKB_KEY_Gbreve, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_H, LSHIFT(Key_O)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_R)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Icircumflex, LSHIFT(Key_S)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_Z)) \ + OP(XKB_KEY_K, LSHIFT(Key_J)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_K)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_I)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_T)) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_R, LSHIFT(Key_U)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_M)) \ + OP(XKB_KEY_Scedilla, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_H)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_G)) \ + OP(XKB_KEY_Ucircumflex, LSHIFT(Key_A)) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_C)) \ + OP(XKB_KEY_W, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_X, LSHIFT(Key_E)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Z, LSHIFT(Key_N)) \ + OP(XKB_KEY_a, Key_F) \ + OP(XKB_KEY_acircumflex, RALT(Key_F)) \ + OP(XKB_KEY_acute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_7)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_Comma) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_Equals)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_V) \ + OP(XKB_KEY_ccedilla, Key_B) \ + OP(XKB_KEY_cent, RALT(Key_V)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Slash) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_d, Key_Y) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_degree, RALT(Key_O)) \ + OP(XKB_KEY_division, RALT(Key_Period)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_ecircumflex, Key_X) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_Q) \ + OP(XKB_KEY_g, Key_W) \ + OP(XKB_KEY_gbreve, RALT(Key_E)) \ + OP(XKB_KEY_grave, RALT(Key_NonUsPound)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_O) \ + OP(XKB_KEY_i, Key_R) \ + OP(XKB_KEY_icircumflex, Key_S) \ + OP(XKB_KEY_j, Key_Z) \ + OP(XKB_KEY_k, Key_J) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_C)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_K) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, RALT(Key_K)) \ + OP(XKB_KEY_multiply, RALT(Key_Comma)) \ + OP(XKB_KEY_n, Key_I) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_T) \ + OP(XKB_KEY_ocircumflex, RALT(Key_T)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_X)) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Slash)) \ + OP(XKB_KEY_plus, Key_Backtick) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_LeftBracket) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_U) \ + OP(XKB_KEY_registered, RALT(Key_U)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_s, Key_M) \ + OP(XKB_KEY_scedilla, Key_Quote) \ + OP(XKB_KEY_section, RALT(Key_M)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_slash, Key_Minus) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_P)) \ + OP(XKB_KEY_t, Key_H) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_G) \ + OP(XKB_KEY_ucircumflex, Key_A) \ + OP(XKB_KEY_udiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_v, Key_C) \ + OP(XKB_KEY_w, Key_RightBracket) \ + OP(XKB_KEY_x, Key_E) \ + OP(XKB_KEY_y, Key_Semicolon) \ + OP(XKB_KEY_yen, RALT(Key_Y)) \ + OP(XKB_KEY_z, Key_N) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace sy { +namespace ku_f { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ku_f +} // namespace sy +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/sy/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/sy/standard/keymap.h new file mode 100644 index 0000000000..e86e0e9337 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/sy/standard/keymap.h @@ -0,0 +1,452 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: sy +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_M)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_M)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Comma)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Period)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', LSHIFT(Key_LeftBracket)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_RightBracket)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', LSHIFT(Key_F)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', LSHIFT(Key_D)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_U)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', LSHIFT(Key_V)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', Key_NonUsBackslashAndPipe) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_C)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Z)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_X)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', RALT(Key_Z)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', LSHIFT(Key_O)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', LSHIFT(Key_I)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'؉', RALT(LSHIFT(Key_Backtick))) \ + OP(L'،', LSHIFT(Key_K)) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', LSHIFT(Key_P)) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؜', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', Key_X) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'آ', LSHIFT(Key_N)) /* U+0622, XKB_KEY_Arabic_maddaonalef, ARABIC LETTER ALEF WITH MADDA ABOVE */ \ + OP(L'أ', LSHIFT(Key_H)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', Key_C) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_Y)) /* U+0625, XKB_KEY_Arabic_hamzaunderalef, ARABIC LETTER ALEF WITH HAMZA BELOW */ \ + OP(L'ئ', Key_Z) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', Key_H) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_F) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', Key_M) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_J) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', Key_E) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_LeftBracket) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', Key_P) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_O) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_RightBracket) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', Key_Backtick) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_V) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_Period) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', Key_A) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', Key_W) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', Key_Q) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', Key_Quote) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', Key_Slash) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', Key_U) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', Key_Y) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_J)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'ف', Key_T) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_R) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', Key_Semicolon) /* U+0643, XKB_KEY_Arabic_kaf, ARABIC LETTER KAF */ \ + OP(L'ل', Key_G) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_L) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_K) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_I) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_Comma) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', Key_N) /* U+0649, XKB_KEY_Arabic_alefmaksura, ARABIC LETTER ALEF MAKSURA */ \ + OP(L'ي', Key_D) /* U+064a, XKB_KEY_Arabic_yeh, ARABIC LETTER YEH */ \ + OP(L'ً', LSHIFT(Key_W)) /* U+064b, XKB_KEY_Arabic_fathatan, ARABIC FATHATAN */ \ + OP(L'ٌ', LSHIFT(Key_R)) /* U+064c, XKB_KEY_Arabic_dammatan, ARABIC DAMMATAN */ \ + OP(L'ٍ', LSHIFT(Key_S)) /* U+064d, XKB_KEY_Arabic_kasratan, ARABIC KASRATAN */ \ + OP(L'َ', LSHIFT(Key_Q)) /* U+064e, XKB_KEY_Arabic_fatha, ARABIC FATHA */ \ + OP(L'ُ', LSHIFT(Key_E)) /* U+064f, XKB_KEY_Arabic_damma, ARABIC DAMMA */ \ + OP(L'ِ', LSHIFT(Key_A)) /* U+0650, XKB_KEY_Arabic_kasra, ARABIC KASRA */ \ + OP(L'ّ', LSHIFT(Key_Backtick)) /* U+0651, XKB_KEY_Arabic_shadda, ARABIC SHADDA */ \ + OP(L'ْ', LSHIFT(Key_X)) /* U+0652, XKB_KEY_Arabic_sukun, ARABIC SUKUN */ \ + OP(L'٠', RALT(Key_0)) /* U+0660, XKB_KEY_Arabic_0, ARABIC-INDIC DIGIT ZERO */ \ + OP(L'١', RALT(Key_1)) /* U+0661, XKB_KEY_Arabic_1, ARABIC-INDIC DIGIT ONE */ \ + OP(L'٢', RALT(Key_2)) /* U+0662, XKB_KEY_Arabic_2, ARABIC-INDIC DIGIT TWO */ \ + OP(L'٣', RALT(Key_3)) /* U+0663, XKB_KEY_Arabic_3, ARABIC-INDIC DIGIT THREE */ \ + OP(L'٤', RALT(Key_4)) /* U+0664, XKB_KEY_Arabic_4, ARABIC-INDIC DIGIT FOUR */ \ + OP(L'٥', RALT(Key_5)) /* U+0665, XKB_KEY_Arabic_5, ARABIC-INDIC DIGIT FIVE */ \ + OP(L'٦', RALT(Key_6)) /* U+0666, XKB_KEY_Arabic_6, ARABIC-INDIC DIGIT SIX */ \ + OP(L'٧', RALT(Key_7)) /* U+0667, XKB_KEY_Arabic_7, ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'٨', RALT(Key_8)) /* U+0668, XKB_KEY_Arabic_8, ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'٩', RALT(Key_9)) /* U+0669, XKB_KEY_Arabic_9, ARABIC-INDIC DIGIT NINE */ \ + OP(L'٪', RALT(Key_Backtick)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'٫', RALT(Key_K)) \ + OP(L'٬', RALT(Key_Comma)) \ + OP(L'٭', RALT(Key_Slash)) \ + OP(L'ٰ', RALT(Key_N)) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٱ', RALT(Key_H)) \ + OP(L'پ', RALT(Key_F)) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', RALT(Key_LeftBracket)) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ژ', RALT(Key_Period)) /* U+0698, XKB_KEY_Arabic_jeh, ARABIC LETTER JEH */ \ + OP(L'ڤ', RALT(Key_T)) /* U+06a4, XKB_KEY_Arabic_veh, ARABIC LETTER VEH */ \ + OP(L'گ', RALT(Key_Semicolon)) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'‌', RALT(LSHIFT(Key_Slash))) \ + OP(L'‍', RALT(LSHIFT(Key_Quote))) \ + OP(L'‎', RALT(LSHIFT(Key_P))) \ + OP(L'‏', RALT(LSHIFT(Key_LeftBracket))) \ + OP(L'‑', RALT(LSHIFT(Key_Minus))) \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'…', LSHIFT(Key_NonUsPound)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'‪', RALT(LSHIFT(Key_Y))) \ + OP(L'‫', RALT(LSHIFT(Key_U))) \ + OP(L'‬', RALT(LSHIFT(Key_I))) \ + OP(L' ', RALT(LSHIFT(Key_NonUsPound))) \ + OP(L'‰', RALT(LSHIFT(Key_5))) \ + OP(L'‹', RALT(LSHIFT(Key_X))) \ + OP(L'›', RALT(LSHIFT(Key_Z))) \ + OP(L'⁦', RALT(LSHIFT(Key_Q))) \ + OP(L'⁧', RALT(LSHIFT(Key_W))) \ + OP(L'⁨', RALT(LSHIFT(Key_E))) \ + OP(L'⁩', RALT(LSHIFT(Key_R))) \ + OP(L'≈', RALT(LSHIFT(Key_Equals))) /* U+2248, XKB_KEY_approxeq, ALMOST EQUAL TO */ \ + OP(L'≠', RALT(Key_Equals)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'⟨', RALT(Key_NonUsPound)) \ + OP(L'⟩', RALT(Key_Quote)) \ + OP(L'ﻵ', LSHIFT(Key_B)) \ + OP(L'ﻷ', LSHIFT(Key_G)) \ + OP(L'ﻹ', LSHIFT(Key_T)) \ + OP(L'ﻻ', Key_B) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Arabic_0, RALT(Key_0)) \ + OP(XKB_KEY_Arabic_1, RALT(Key_1)) \ + OP(XKB_KEY_Arabic_2, RALT(Key_2)) \ + OP(XKB_KEY_Arabic_3, RALT(Key_3)) \ + OP(XKB_KEY_Arabic_4, RALT(Key_4)) \ + OP(XKB_KEY_Arabic_5, RALT(Key_5)) \ + OP(XKB_KEY_Arabic_6, RALT(Key_6)) \ + OP(XKB_KEY_Arabic_7, RALT(Key_7)) \ + OP(XKB_KEY_Arabic_8, RALT(Key_8)) \ + OP(XKB_KEY_Arabic_9, RALT(Key_9)) \ + OP(XKB_KEY_Arabic_ain, Key_U) \ + OP(XKB_KEY_Arabic_alef, Key_H) \ + OP(XKB_KEY_Arabic_alefmaksura, Key_N) \ + OP(XKB_KEY_Arabic_beh, Key_F) \ + OP(XKB_KEY_Arabic_comma, LSHIFT(Key_K)) \ + OP(XKB_KEY_Arabic_dad, Key_Q) \ + OP(XKB_KEY_Arabic_dal, Key_RightBracket) \ + OP(XKB_KEY_Arabic_damma, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_dammatan, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_fatha, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Arabic_fathatan, LSHIFT(Key_W)) \ + OP(XKB_KEY_Arabic_feh, Key_T) \ + OP(XKB_KEY_Arabic_gaf, RALT(Key_Semicolon)) \ + OP(XKB_KEY_Arabic_ghain, Key_Y) \ + OP(XKB_KEY_Arabic_ha, Key_I) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, Key_P) \ + OP(XKB_KEY_Arabic_hamza, Key_X) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, Key_C) \ + OP(XKB_KEY_Arabic_hamzaonyeh, Key_Z) \ + OP(XKB_KEY_Arabic_hamzaunderalef, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Arabic_jeem, Key_LeftBracket) \ + OP(XKB_KEY_Arabic_jeh, RALT(Key_Period)) \ + OP(XKB_KEY_Arabic_kaf, Key_Semicolon) \ + OP(XKB_KEY_Arabic_kasra, LSHIFT(Key_A)) \ + OP(XKB_KEY_Arabic_kasratan, LSHIFT(Key_S)) \ + OP(XKB_KEY_Arabic_khah, Key_O) \ + OP(XKB_KEY_Arabic_lam, Key_G) \ + OP(XKB_KEY_Arabic_maddaonalef, LSHIFT(Key_N)) \ + OP(XKB_KEY_Arabic_meem, Key_L) \ + OP(XKB_KEY_Arabic_noon, Key_K) \ + OP(XKB_KEY_Arabic_peh, RALT(Key_F)) \ + OP(XKB_KEY_Arabic_percent, RALT(Key_Backtick)) \ + OP(XKB_KEY_Arabic_qaf, Key_R) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_V) \ + OP(XKB_KEY_Arabic_sad, Key_W) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, LSHIFT(Key_P)) \ + OP(XKB_KEY_Arabic_shadda, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Arabic_sheen, Key_A) \ + OP(XKB_KEY_Arabic_sukun, LSHIFT(Key_X)) \ + OP(XKB_KEY_Arabic_superscript_alef, RALT(Key_N)) \ + OP(XKB_KEY_Arabic_tah, Key_Quote) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_J)) \ + OP(XKB_KEY_Arabic_tcheh, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_Arabic_teh, Key_J) \ + OP(XKB_KEY_Arabic_tehmarbuta, Key_M) \ + OP(XKB_KEY_Arabic_thal, Key_Backtick) \ + OP(XKB_KEY_Arabic_theh, Key_E) \ + OP(XKB_KEY_Arabic_veh, RALT(Key_T)) \ + OP(XKB_KEY_Arabic_waw, Key_Comma) \ + OP(XKB_KEY_Arabic_yeh, Key_D) \ + OP(XKB_KEY_Arabic_zah, Key_Slash) \ + OP(XKB_KEY_Arabic_zain, Key_Period) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_M)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_approxeq, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Z)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_V)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_C)) \ + OP(XKB_KEY_bracketleft, LSHIFT(Key_F)) \ + OP(XKB_KEY_bracketright, LSHIFT(Key_D)) \ + OP(XKB_KEY_brokenbar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_division, LSHIFT(Key_I)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_ellipsis, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, LSHIFT(Key_U)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_X)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Z)) \ + OP(XKB_KEY_less, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, LSHIFT(Key_O)) \ + OP(XKB_KEY_notequal, RALT(Key_Equals)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, LSHIFT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_slash, LSHIFT(Key_L)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace sy { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace sy +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/sy/syc/keymap.h b/src/kaleidoscope/host_keymap/linux/sy/syc/keymap.h new file mode 100644 index 0000000000..7d81da4263 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/sy/syc/keymap.h @@ -0,0 +1,305 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: sy +// variant: syc + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_M) \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_NonUsPound)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('[', Key_X) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(']', Key_Z) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_M) \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_NonUsPound)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'[', Key_X) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L']', Key_Z) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'«', LSHIFT(Key_Minus)) \ + OP(L'»', LSHIFT(Key_8)) \ + OP(L'̃', LSHIFT(Key_LeftBracket)) \ + OP(L'̄', LSHIFT(Key_O)) \ + OP(L'̇', LSHIFT(Key_P)) \ + OP(L'̈', LSHIFT(Key_I)) \ + OP(L'̊', LSHIFT(Key_2)) \ + OP(L'̣', LSHIFT(Key_Semicolon)) \ + OP(L'̤', LSHIFT(Key_K)) \ + OP(L'̥', LSHIFT(Key_3)) \ + OP(L'̮', LSHIFT(Key_Backtick)) \ + OP(L'̰', LSHIFT(Key_Quote)) \ + OP(L'̱', LSHIFT(Key_L)) \ + OP(L'،', LSHIFT(Key_Comma)) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', LSHIFT(Key_Period)) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ـ', LSHIFT(Key_J)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'܀', Key_N) \ + OP(L'܆', Key_NonUsPound) \ + OP(L'܇', Key_Slash) \ + OP(L'܊', LSHIFT(Key_7)) \ + OP(L'܏', Key_Backtick) \ + OP(L'ܐ', Key_H) \ + OP(L'ܑ', LSHIFT(Key_H)) \ + OP(L'ܒ', Key_F) \ + OP(L'ܓ', Key_LeftBracket) \ + OP(L'ܔ', Key_Q) \ + OP(L'ܕ', Key_RightBracket) \ + OP(L'ܖ', Key_E) \ + OP(L'ܗ', Key_I) \ + OP(L'ܘ', Key_Comma) \ + OP(L'ܙ', Key_Period) \ + OP(L'ܚ', Key_P) \ + OP(L'ܛ', Key_Quote) \ + OP(L'ܜ', Key_Y) \ + OP(L'ܝ', Key_D) \ + OP(L'ܞ', Key_O) \ + OP(L'ܟ', Key_Semicolon) \ + OP(L'ܠ', Key_G) \ + OP(L'ܡ', Key_L) \ + OP(L'ܢ', Key_K) \ + OP(L'ܣ', Key_S) \ + OP(L'ܤ', Key_C) \ + OP(L'ܥ', Key_U) \ + OP(L'ܦ', Key_T) \ + OP(L'ܧ', Key_B) \ + OP(L'ܨ', Key_W) \ + OP(L'ܩ', Key_R) \ + OP(L'ܪ', Key_V) \ + OP(L'ܫ', Key_A) \ + OP(L'ܬ', Key_J) \ + OP(L'ܰ', LSHIFT(Key_Q)) \ + OP(L'ܱ', LSHIFT(Key_A)) \ + OP(L'ܲ', LSHIFT(Key_Z)) \ + OP(L'ܳ', LSHIFT(Key_W)) \ + OP(L'ܴ', LSHIFT(Key_S)) \ + OP(L'ܵ', LSHIFT(Key_X)) \ + OP(L'ܶ', LSHIFT(Key_E)) \ + OP(L'ܷ', LSHIFT(Key_D)) \ + OP(L'ܸ', LSHIFT(Key_C)) \ + OP(L'ܹ', LSHIFT(Key_N)) \ + OP(L'ܺ', LSHIFT(Key_R)) \ + OP(L'ܻ', LSHIFT(Key_F)) \ + OP(L'ܼ', LSHIFT(Key_V)) \ + OP(L'ܽ', LSHIFT(Key_T)) \ + OP(L'ܾ', LSHIFT(Key_G)) \ + OP(L'ܿ', LSHIFT(Key_B)) \ + OP(L'݀', LSHIFT(Key_Y)) \ + OP(L'݁', LSHIFT(Key_U)) \ + OP(L'݂', LSHIFT(Key_M)) \ + OP(L'݉', LSHIFT(Key_4)) \ + OP(L'݊', LSHIFT(Key_RightBracket)) \ + OP(L'‌', LSHIFT(Key_Spacebar)) \ + OP(L'♰', LSHIFT(Key_5)) \ + OP(L'♱', LSHIFT(Key_6)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_Arabic_comma, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_semicolon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_J)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_bracketleft, Key_X) \ + OP(XKB_KEY_bracketright, Key_Z) \ + OP(XKB_KEY_colon, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace sy { +namespace syc { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace syc +} // namespace sy +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/sy/syc_phonetic/keymap.h b/src/kaleidoscope/host_keymap/linux/sy/syc_phonetic/keymap.h new file mode 100644 index 0000000000..ac5e6c16c5 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/sy/syc_phonetic/keymap.h @@ -0,0 +1,305 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: sy +// variant: syc_phonetic + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_NonUsPound)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(']', Key_LeftBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'(', LSHIFT(Key_0)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_NonUsPound)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'[', Key_RightBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L']', Key_LeftBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'«', LSHIFT(Key_Minus)) \ + OP(L'»', LSHIFT(Key_8)) \ + OP(L'̃', LSHIFT(Key_LeftBracket)) \ + OP(L'̄', LSHIFT(Key_O)) \ + OP(L'̇', LSHIFT(Key_P)) \ + OP(L'̈', LSHIFT(Key_I)) \ + OP(L'̊', LSHIFT(Key_2)) \ + OP(L'̣', LSHIFT(Key_Semicolon)) \ + OP(L'̤', LSHIFT(Key_K)) \ + OP(L'̥', LSHIFT(Key_3)) \ + OP(L'̮', LSHIFT(Key_Backtick)) \ + OP(L'̰', LSHIFT(Key_Quote)) \ + OP(L'̱', LSHIFT(Key_L)) \ + OP(L'،', LSHIFT(Key_Comma)) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', LSHIFT(Key_Period)) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ـ', LSHIFT(Key_J)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'܀', Key_Comma) \ + OP(L'܆', Key_NonUsPound) \ + OP(L'܇', Key_Slash) \ + OP(L'܊', LSHIFT(Key_7)) \ + OP(L'܏', Key_Backtick) \ + OP(L'ܐ', Key_A) \ + OP(L'ܑ', LSHIFT(Key_H)) \ + OP(L'ܒ', Key_B) \ + OP(L'ܓ', Key_G) \ + OP(L'ܔ', Key_F) \ + OP(L'ܕ', Key_D) \ + OP(L'ܖ', Key_E) \ + OP(L'ܗ', Key_H) \ + OP(L'ܘ', Key_W) \ + OP(L'ܙ', Key_Z) \ + OP(L'ܚ', Key_Semicolon) \ + OP(L'ܛ', Key_J) \ + OP(L'ܜ', Key_U) \ + OP(L'ܝ', Key_Y) \ + OP(L'ܞ', Key_Quote) \ + OP(L'ܟ', Key_K) \ + OP(L'ܠ', Key_L) \ + OP(L'ܡ', Key_M) \ + OP(L'ܢ', Key_N) \ + OP(L'ܣ', Key_S) \ + OP(L'ܤ', Key_C) \ + OP(L'ܥ', Key_I) \ + OP(L'ܦ', Key_P) \ + OP(L'ܧ', Key_O) \ + OP(L'ܨ', Key_X) \ + OP(L'ܩ', Key_Q) \ + OP(L'ܪ', Key_R) \ + OP(L'ܫ', Key_V) \ + OP(L'ܬ', Key_T) \ + OP(L'ܰ', LSHIFT(Key_Q)) \ + OP(L'ܱ', LSHIFT(Key_A)) \ + OP(L'ܲ', LSHIFT(Key_Z)) \ + OP(L'ܳ', LSHIFT(Key_W)) \ + OP(L'ܴ', LSHIFT(Key_S)) \ + OP(L'ܵ', LSHIFT(Key_X)) \ + OP(L'ܶ', LSHIFT(Key_E)) \ + OP(L'ܷ', LSHIFT(Key_D)) \ + OP(L'ܸ', LSHIFT(Key_C)) \ + OP(L'ܹ', LSHIFT(Key_N)) \ + OP(L'ܺ', LSHIFT(Key_R)) \ + OP(L'ܻ', LSHIFT(Key_F)) \ + OP(L'ܼ', LSHIFT(Key_V)) \ + OP(L'ܽ', LSHIFT(Key_T)) \ + OP(L'ܾ', LSHIFT(Key_G)) \ + OP(L'ܿ', LSHIFT(Key_B)) \ + OP(L'݀', LSHIFT(Key_Y)) \ + OP(L'݁', LSHIFT(Key_U)) \ + OP(L'݂', LSHIFT(Key_M)) \ + OP(L'݉', LSHIFT(Key_4)) \ + OP(L'݊', LSHIFT(Key_RightBracket)) \ + OP(L'‌', LSHIFT(Key_Spacebar)) \ + OP(L'♰', LSHIFT(Key_5)) \ + OP(L'♱', LSHIFT(Key_6)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_Arabic_comma, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_semicolon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_J)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_bracketleft, Key_RightBracket) \ + OP(XKB_KEY_bracketright, Key_LeftBracket) \ + OP(XKB_KEY_colon, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_0)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace sy { +namespace syc_phonetic { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace syc_phonetic +} // namespace sy +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/tg/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/tg/standard/keymap.h new file mode 100644 index 0000000000..4ab407fdfd --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/tg/standard/keymap.h @@ -0,0 +1,507 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: tg +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Slash) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_3) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_RightBracket) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Quote)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_4) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_Minus) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_NonUsPound) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_M) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_6) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Comma)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_Period) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Comma) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_0)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_Q)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_Semicolon)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_A)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Z)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_W)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_5)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_8)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_Minus)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_9)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_7)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_Q) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_Semicolon) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_A) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Z) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_W) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_4)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_6)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_2)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'£', LSHIFT(Key_RightBracket)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_RightBracket)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', LSHIFT(Key_Slash)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'°', LSHIFT(Key_Minus)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', Key_Backtick) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'µ', LSHIFT(Key_NonUsPound)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'à', Key_0) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'ç', Key_9) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', Key_7) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', Key_2) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ù', Key_Quote) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'Ĥ', RALT(LSHIFT(Key_H))) \ + OP(L'Ŋ', RALT(LSHIFT(Key_N))) \ + OP(L'ŋ', RALT(Key_N)) \ + OP(L'Ɓ', RALT(LSHIFT(Key_B))) \ + OP(L'Ɔ', RALT(LSHIFT(Key_O))) \ + OP(L'Ɖ', RALT(LSHIFT(Key_D))) \ + OP(L'Ɗ', RALT(LSHIFT(Key_T))) \ + OP(L'Ǝ', RALT(LSHIFT(Key_A))) \ + OP(L'Ɛ', RALT(LSHIFT(Key_R))) \ + OP(L'Ƒ', RALT(LSHIFT(Key_F))) \ + OP(L'ƒ', RALT(Key_F)) \ + OP(L'Ɣ', RALT(LSHIFT(Key_G))) \ + OP(L'Ɩ', RALT(LSHIFT(Key_I))) \ + OP(L'Ɨ', RALT(LSHIFT(Key_J))) \ + OP(L'Ɲ', RALT(LSHIFT(Key_Semicolon))) \ + OP(L'Ʊ', RALT(LSHIFT(Key_U))) \ + OP(L'Ʋ', RALT(LSHIFT(Key_V))) \ + OP(L'Ƴ', RALT(LSHIFT(Key_Y))) \ + OP(L'ƴ', RALT(Key_Y)) \ + OP(L'Ʒ', RALT(LSHIFT(Key_W))) /* U+01b7, XKB_KEY_EZH, LATIN CAPITAL LETTER EZH */ \ + OP(L'ǝ', RALT(Key_A)) \ + OP(L'ɓ', RALT(Key_B)) \ + OP(L'ɔ', RALT(Key_O)) \ + OP(L'ɖ', RALT(Key_D)) \ + OP(L'ɗ', RALT(Key_T)) \ + OP(L'ɛ', RALT(Key_R)) \ + OP(L'ɣ', RALT(Key_G)) \ + OP(L'ɦ', RALT(Key_H)) \ + OP(L'ɨ', RALT(Key_J)) \ + OP(L'ɩ', RALT(Key_I)) \ + OP(L'ɲ', RALT(Key_Semicolon)) \ + OP(L'ʊ', RALT(Key_U)) \ + OP(L'ʋ', RALT(Key_V)) \ + OP(L'ʒ', RALT(Key_W)) /* U+0292, XKB_KEY_ezh, LATIN SMALL LETTER EZH */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_A, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_EZH, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_A)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_Z)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_W)) \ + OP(XKB_KEY_a, Key_Q) \ + OP(XKB_KEY_agrave, Key_0) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_4) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_9)) \ + OP(XKB_KEY_asciitilde, RALT(Key_2)) \ + OP(XKB_KEY_asterisk, Key_NonUsPound) \ + OP(XKB_KEY_at, RALT(Key_0)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_8)) \ + OP(XKB_KEY_bar, RALT(Key_6)) \ + OP(XKB_KEY_braceleft, RALT(Key_4)) \ + OP(XKB_KEY_braceright, RALT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, RALT(Key_5)) \ + OP(XKB_KEY_bracketright, RALT(Key_Minus)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_9) \ + OP(XKB_KEY_colon, Key_Period) \ + OP(XKB_KEY_comma, Key_M) \ + OP(XKB_KEY_currency, RALT(Key_RightBracket)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, RALT(Key_NonUsPound)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(Key_LeftBracket)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, Key_LeftBracket) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_Quote)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Period)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Slash)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_dollar, Key_RightBracket) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, Key_2) \ + OP(XKB_KEY_egrave, Key_7) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, Key_Slash) \ + OP(XKB_KEY_ezh, RALT(Key_W)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_7)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_Semicolon) \ + OP(XKB_KEY_minus, Key_6) \ + OP(XKB_KEY_mu, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_Minus) \ + OP(XKB_KEY_percent, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_period, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_A) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_quotedbl, Key_3) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_semicolon, Key_Comma) \ + OP(XKB_KEY_slash, LSHIFT(Key_Period)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_twosuperior, Key_Backtick) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ugrave, Key_Quote) \ + OP(XKB_KEY_underscore, Key_8) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_Z) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_W) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace tg { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace tg +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/th/pat/keymap.h b/src/kaleidoscope/host_keymap/linux/th/pat/keymap.h new file mode 100644 index 0000000000..d339832f27 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/th/pat/keymap.h @@ -0,0 +1,383 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: th +// variant: pat + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', LSHIFT(Key_Equals)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_4)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', LSHIFT(Key_8)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_1) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_5)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('_', Key_Backtick) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', LSHIFT(Key_Equals)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_4)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', LSHIFT(Key_8)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_1) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_5)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'_', Key_Backtick) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'ก', Key_F) /* U+0e01, XKB_KEY_Thai_kokai, THAI CHARACTER KO KAI */ \ + OP(L'ข', Key_Quote) /* U+0e02, XKB_KEY_Thai_khokhai, THAI CHARACTER KHO KHAI */ \ + OP(L'ค', Key_N) /* U+0e04, XKB_KEY_Thai_khokhwai, THAI CHARACTER KHO KHWAI */ \ + OP(L'ฆ', LSHIFT(Key_Semicolon)) /* U+0e06, XKB_KEY_Thai_khorakhang, THAI CHARACTER KHO RAKHANG */ \ + OP(L'ง', Key_D) /* U+0e07, XKB_KEY_Thai_ngongu, THAI CHARACTER NGO NGU */ \ + OP(L'จ', Key_Period) /* U+0e08, XKB_KEY_Thai_chochan, THAI CHARACTER CHO CHAN */ \ + OP(L'ฉ', LSHIFT(Key_Period)) /* U+0e09, XKB_KEY_Thai_choching, THAI CHARACTER CHO CHING */ \ + OP(L'ช', LSHIFT(Key_K)) /* U+0e0a, XKB_KEY_Thai_chochang, THAI CHARACTER CHO CHANG */ \ + OP(L'ซ', LSHIFT(Key_I)) /* U+0e0b, XKB_KEY_Thai_soso, THAI CHARACTER SO SO */ \ + OP(L'ฌ', Key_RightBracket) /* U+0e0c, XKB_KEY_Thai_chochoe, THAI CHARACTER CHO CHOE */ \ + OP(L'ญ', LSHIFT(Key_R)) /* U+0e0d, XKB_KEY_Thai_yoying, THAI CHARACTER YO YING */ \ + OP(L'ฎ', LSHIFT(Key_Z)) /* U+0e0e, XKB_KEY_Thai_dochada, THAI CHARACTER DO CHADA */ \ + OP(L'ฏ', LSHIFT(Key_X)) /* U+0e0f, XKB_KEY_Thai_topatak, THAI CHARACTER TO PATAK */ \ + OP(L'ฐ', LSHIFT(Key_C)) /* U+0e10, XKB_KEY_Thai_thothan, THAI CHARACTER THO THAN */ \ + OP(L'ฑ', LSHIFT(Key_Quote)) /* U+0e11, XKB_KEY_Thai_thonangmontho, THAI CHARACTER THO NANGMONTHO */ \ + OP(L'ฒ', LSHIFT(Key_P)) /* U+0e12, XKB_KEY_Thai_thophuthao, THAI CHARACTER THO PHUTHAO */ \ + OP(L'ณ', LSHIFT(Key_F)) /* U+0e13, XKB_KEY_Thai_nonen, THAI CHARACTER NO NEN */ \ + OP(L'ด', Key_U) /* U+0e14, XKB_KEY_Thai_dodek, THAI CHARACTER DO DEK */ \ + OP(L'ต', Key_W) /* U+0e15, XKB_KEY_Thai_totao, THAI CHARACTER TO TAO */ \ + OP(L'ถ', LSHIFT(Key_O)) /* U+0e16, XKB_KEY_Thai_thothung, THAI CHARACTER THO THUNG */ \ + OP(L'ท', Key_S) /* U+0e17, XKB_KEY_Thai_thothahan, THAI CHARACTER THO THAHAN */ \ + OP(L'ธ', LSHIFT(Key_S)) /* U+0e18, XKB_KEY_Thai_thothong, THAI CHARACTER THO THONG */ \ + OP(L'น', Key_K) /* U+0e19, XKB_KEY_Thai_nonu, THAI CHARACTER NO NU */ \ + OP(L'บ', Key_Z) /* U+0e1a, XKB_KEY_Thai_bobaimai, THAI CHARACTER BO BAIMAI */ \ + OP(L'ป', Key_X) /* U+0e1b, XKB_KEY_Thai_popla, THAI CHARACTER PO PLA */ \ + OP(L'ผ', LSHIFT(Key_J)) /* U+0e1c, XKB_KEY_Thai_phophung, THAI CHARACTER PHO PHUNG */ \ + OP(L'ฝ', LSHIFT(Key_U)) /* U+0e1d, XKB_KEY_Thai_fofa, THAI CHARACTER FO FA */ \ + OP(L'พ', Key_Slash) /* U+0e1e, XKB_KEY_Thai_phophan, THAI CHARACTER PHO PHAN */ \ + OP(L'ฟ', LSHIFT(Key_Comma)) /* U+0e1f, XKB_KEY_Thai_fofan, THAI CHARACTER FO FAN */ \ + OP(L'ภ', LSHIFT(Key_V)) /* U+0e20, XKB_KEY_Thai_phosamphao, THAI CHARACTER PHO SAMPHAO */ \ + OP(L'ม', Key_I) /* U+0e21, XKB_KEY_Thai_moma, THAI CHARACTER MO MA */ \ + OP(L'ย', Key_E) /* U+0e22, XKB_KEY_Thai_yoyak, THAI CHARACTER YO YAK */ \ + OP(L'ร', Key_T) /* U+0e23, XKB_KEY_Thai_rorua, THAI CHARACTER RO RUA */ \ + OP(L'ฤ', LSHIFT(Key_W)) /* U+0e24, XKB_KEY_Thai_ru, THAI CHARACTER RU */ \ + OP(L'ล', Key_C) /* U+0e25, XKB_KEY_Thai_loling, THAI CHARACTER LO LING */ \ + OP(L'ฦ', LSHIFT(Key_RightBracket)) /* U+0e26, XKB_KEY_Thai_lu, THAI CHARACTER LU */ \ + OP(L'ว', Key_O) /* U+0e27, XKB_KEY_Thai_wowaen, THAI CHARACTER WO WAEN */ \ + OP(L'ศ', LSHIFT(Key_N)) /* U+0e28, XKB_KEY_Thai_sosala, THAI CHARACTER SO SALA */ \ + OP(L'ษ', LSHIFT(Key_T)) /* U+0e29, XKB_KEY_Thai_sorusi, THAI CHARACTER SO RUSI */ \ + OP(L'ส', Key_M) /* U+0e2a, XKB_KEY_Thai_sosua, THAI CHARACTER SO SUA */ \ + OP(L'ห', Key_V) /* U+0e2b, XKB_KEY_Thai_hohip, THAI CHARACTER HO HIP */ \ + OP(L'ฬ', LSHIFT(Key_Slash)) /* U+0e2c, XKB_KEY_Thai_lochula, THAI CHARACTER LO CHULA */ \ + OP(L'อ', Key_R) /* U+0e2d, XKB_KEY_Thai_oang, THAI CHARACTER O ANG */ \ + OP(L'ฮ', LSHIFT(Key_M)) /* U+0e2e, XKB_KEY_Thai_honokhuk, THAI CHARACTER HO NOKHUK */ \ + OP(L'ฯ', LSHIFT(Key_LeftBracket)) /* U+0e2f, XKB_KEY_Thai_paiyannoi, THAI CHARACTER PAIYANNOI */ \ + OP(L'ะ', Key_Comma) /* U+0e30, XKB_KEY_Thai_saraa, THAI CHARACTER SARA A */ \ + OP(L'ั', Key_G) /* U+0e31, XKB_KEY_Thai_maihanakat, THAI CHARACTER MAI HAN-AKAT */ \ + OP(L'า', Key_J) /* U+0e32, XKB_KEY_Thai_saraaa, THAI CHARACTER SARA AA */ \ + OP(L'ำ', LSHIFT(Key_D)) /* U+0e33, XKB_KEY_Thai_saraam, THAI CHARACTER SARA AM */ \ + OP(L'ิ', Key_B) /* U+0e34, XKB_KEY_Thai_sarai, THAI CHARACTER SARA I */ \ + OP(L'ี', Key_H) /* U+0e35, XKB_KEY_Thai_saraii, THAI CHARACTER SARA II */ \ + OP(L'ึ', LSHIFT(Key_Y)) /* U+0e36, XKB_KEY_Thai_saraue, THAI CHARACTER SARA UE */ \ + OP(L'ื', LSHIFT(Key_H)) /* U+0e37, XKB_KEY_Thai_sarauee, THAI CHARACTER SARA UEE */ \ + OP(L'ุ', LSHIFT(Key_6)) /* U+0e38, XKB_KEY_Thai_sarau, THAI CHARACTER SARA U */ \ + OP(L'ู', Key_6) /* U+0e39, XKB_KEY_Thai_sarauu, THAI CHARACTER SARA UU */ \ + OP(L'ฺ', LSHIFT(Key_B)) /* U+0e3a, XKB_KEY_Thai_phinthu, THAI CHARACTER PHINTHU */ \ + OP(L'฿', LSHIFT(Key_Backtick)) /* U+0e3f, XKB_KEY_Thai_baht, THAI CURRENCY SYMBOL BAHT */ \ + OP(L'เ', Key_L) /* U+0e40, XKB_KEY_Thai_sarae, THAI CHARACTER SARA E */ \ + OP(L'แ', Key_P) /* U+0e41, XKB_KEY_Thai_saraae, THAI CHARACTER SARA AE */ \ + OP(L'โ', LSHIFT(Key_L)) /* U+0e42, XKB_KEY_Thai_sarao, THAI CHARACTER SARA O */ \ + OP(L'ใ', Key_LeftBracket) /* U+0e43, XKB_KEY_Thai_saraaimaimuan, THAI CHARACTER SARA AI MAIMUAN */ \ + OP(L'ไ', Key_Semicolon) /* U+0e44, XKB_KEY_Thai_saraaimaimalai, THAI CHARACTER SARA AI MAIMALAI */ \ + OP(L'ๅ', Key_NonUsPound) /* U+0e45, XKB_KEY_Thai_lakkhangyao, THAI CHARACTER LAKKHANGYAO */ \ + OP(L'ๆ', LSHIFT(Key_E)) /* U+0e46, XKB_KEY_Thai_maiyamok, THAI CHARACTER MAIYAMOK */ \ + OP(L'็', Key_Q) /* U+0e47, XKB_KEY_Thai_maitaikhu, THAI CHARACTER MAITAIKHU */ \ + OP(L'่', Key_Y) /* U+0e48, XKB_KEY_Thai_maiek, THAI CHARACTER MAI EK */ \ + OP(L'้', Key_A) /* U+0e49, XKB_KEY_Thai_maitho, THAI CHARACTER MAI THO */ \ + OP(L'๊', LSHIFT(Key_Q)) /* U+0e4a, XKB_KEY_Thai_maitri, THAI CHARACTER MAI TRI */ \ + OP(L'๋', LSHIFT(Key_A)) /* U+0e4b, XKB_KEY_Thai_maichattawa, THAI CHARACTER MAI CHATTAWA */ \ + OP(L'์', LSHIFT(Key_G)) /* U+0e4c, XKB_KEY_Thai_thanthakhat, THAI CHARACTER THANTHAKHAT */ \ + OP(L'ํ', LSHIFT(Key_NonUsPound)) /* U+0e4d, XKB_KEY_Thai_nikhahit, THAI CHARACTER NIKHAHIT */ \ + OP(L'๐', Key_0) /* U+0e50, XKB_KEY_Thai_leksun, THAI DIGIT ZERO */ \ + OP(L'๑', Key_Minus) /* U+0e51, XKB_KEY_Thai_leknung, THAI DIGIT ONE */ \ + OP(L'๒', Key_2) /* U+0e52, XKB_KEY_Thai_leksong, THAI DIGIT TWO */ \ + OP(L'๓', Key_3) /* U+0e53, XKB_KEY_Thai_leksam, THAI DIGIT THREE */ \ + OP(L'๔', Key_4) /* U+0e54, XKB_KEY_Thai_leksi, THAI DIGIT FOUR */ \ + OP(L'๕', Key_5) /* U+0e55, XKB_KEY_Thai_lekha, THAI DIGIT FIVE */ \ + OP(L'๖', Key_Equals) /* U+0e56, XKB_KEY_Thai_lekhok, THAI DIGIT SIX */ \ + OP(L'๗', Key_7) /* U+0e57, XKB_KEY_Thai_lekchet, THAI DIGIT SEVEN */ \ + OP(L'๘', Key_8) /* U+0e58, XKB_KEY_Thai_lekpaet, THAI DIGIT EIGHT */ \ + OP(L'๙', Key_9) /* U+0e59, XKB_KEY_Thai_lekkao, THAI DIGIT NINE */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Thai_baht, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Thai_bobaimai, Key_Z) \ + OP(XKB_KEY_Thai_chochan, Key_Period) \ + OP(XKB_KEY_Thai_chochang, LSHIFT(Key_K)) \ + OP(XKB_KEY_Thai_choching, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Thai_chochoe, Key_RightBracket) \ + OP(XKB_KEY_Thai_dochada, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Thai_dodek, Key_U) \ + OP(XKB_KEY_Thai_fofa, LSHIFT(Key_U)) \ + OP(XKB_KEY_Thai_fofan, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Thai_hohip, Key_V) \ + OP(XKB_KEY_Thai_honokhuk, LSHIFT(Key_M)) \ + OP(XKB_KEY_Thai_khokhai, Key_Quote) \ + OP(XKB_KEY_Thai_khokhwai, Key_N) \ + OP(XKB_KEY_Thai_khorakhang, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Thai_kokai, Key_F) \ + OP(XKB_KEY_Thai_lakkhangyao, Key_NonUsPound) \ + OP(XKB_KEY_Thai_lekchet, Key_7) \ + OP(XKB_KEY_Thai_lekha, Key_5) \ + OP(XKB_KEY_Thai_lekhok, Key_Equals) \ + OP(XKB_KEY_Thai_lekkao, Key_9) \ + OP(XKB_KEY_Thai_leknung, Key_Minus) \ + OP(XKB_KEY_Thai_lekpaet, Key_8) \ + OP(XKB_KEY_Thai_leksam, Key_3) \ + OP(XKB_KEY_Thai_leksi, Key_4) \ + OP(XKB_KEY_Thai_leksong, Key_2) \ + OP(XKB_KEY_Thai_leksun, Key_0) \ + OP(XKB_KEY_Thai_lochula, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Thai_loling, Key_C) \ + OP(XKB_KEY_Thai_lu, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Thai_maichattawa, LSHIFT(Key_A)) \ + OP(XKB_KEY_Thai_maiek, Key_Y) \ + OP(XKB_KEY_Thai_maihanakat, Key_G) \ + OP(XKB_KEY_Thai_maitaikhu, Key_Q) \ + OP(XKB_KEY_Thai_maitho, Key_A) \ + OP(XKB_KEY_Thai_maitri, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Thai_maiyamok, LSHIFT(Key_E)) \ + OP(XKB_KEY_Thai_moma, Key_I) \ + OP(XKB_KEY_Thai_ngongu, Key_D) \ + OP(XKB_KEY_Thai_nikhahit, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Thai_nonen, LSHIFT(Key_F)) \ + OP(XKB_KEY_Thai_nonu, Key_K) \ + OP(XKB_KEY_Thai_oang, Key_R) \ + OP(XKB_KEY_Thai_paiyannoi, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Thai_phinthu, LSHIFT(Key_B)) \ + OP(XKB_KEY_Thai_phophan, Key_Slash) \ + OP(XKB_KEY_Thai_phophung, LSHIFT(Key_J)) \ + OP(XKB_KEY_Thai_phosamphao, LSHIFT(Key_V)) \ + OP(XKB_KEY_Thai_popla, Key_X) \ + OP(XKB_KEY_Thai_rorua, Key_T) \ + OP(XKB_KEY_Thai_ru, LSHIFT(Key_W)) \ + OP(XKB_KEY_Thai_saraa, Key_Comma) \ + OP(XKB_KEY_Thai_saraaa, Key_J) \ + OP(XKB_KEY_Thai_saraae, Key_P) \ + OP(XKB_KEY_Thai_saraaimaimalai, Key_Semicolon) \ + OP(XKB_KEY_Thai_saraaimaimuan, Key_LeftBracket) \ + OP(XKB_KEY_Thai_saraam, LSHIFT(Key_D)) \ + OP(XKB_KEY_Thai_sarae, Key_L) \ + OP(XKB_KEY_Thai_sarai, Key_B) \ + OP(XKB_KEY_Thai_saraii, Key_H) \ + OP(XKB_KEY_Thai_sarao, LSHIFT(Key_L)) \ + OP(XKB_KEY_Thai_sarau, LSHIFT(Key_6)) \ + OP(XKB_KEY_Thai_saraue, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Thai_sarauee, LSHIFT(Key_H)) \ + OP(XKB_KEY_Thai_sarauu, Key_6) \ + OP(XKB_KEY_Thai_sorusi, LSHIFT(Key_T)) \ + OP(XKB_KEY_Thai_sosala, LSHIFT(Key_N)) \ + OP(XKB_KEY_Thai_soso, LSHIFT(Key_I)) \ + OP(XKB_KEY_Thai_sosua, Key_M) \ + OP(XKB_KEY_Thai_thanthakhat, LSHIFT(Key_G)) \ + OP(XKB_KEY_Thai_thonangmontho, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Thai_thophuthao, LSHIFT(Key_P)) \ + OP(XKB_KEY_Thai_thothahan, Key_S) \ + OP(XKB_KEY_Thai_thothan, LSHIFT(Key_C)) \ + OP(XKB_KEY_Thai_thothong, LSHIFT(Key_S)) \ + OP(XKB_KEY_Thai_thothung, LSHIFT(Key_O)) \ + OP(XKB_KEY_Thai_topatak, LSHIFT(Key_X)) \ + OP(XKB_KEY_Thai_totao, Key_W) \ + OP(XKB_KEY_Thai_wowaen, Key_O) \ + OP(XKB_KEY_Thai_yoyak, Key_E) \ + OP(XKB_KEY_Thai_yoying, LSHIFT(Key_R)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_comma, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, Key_1) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_period, LSHIFT(Key_8)) \ + OP(XKB_KEY_plus, LSHIFT(Key_1)) \ + OP(XKB_KEY_question, LSHIFT(Key_5)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_slash, LSHIFT(Key_3)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, Key_Backtick) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace th { +namespace pat { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace pat +} // namespace th +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/th/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/th/standard/keymap.h new file mode 100644 index 0000000000..ca3755703b --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/th/standard/keymap.h @@ -0,0 +1,384 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: th +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('"', LSHIFT(Key_W)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', LSHIFT(Key_Backtick)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', LSHIFT(Key_Z)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_X)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_RightBracket)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_3) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Quote)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_2) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('_', Key_Backtick) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'"', LSHIFT(Key_W)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', LSHIFT(Key_Backtick)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', LSHIFT(Key_Z)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_X)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_RightBracket)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_3) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Quote)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_2) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'_', Key_Backtick) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'ก', Key_D) /* U+0e01, XKB_KEY_Thai_kokai, THAI CHARACTER KO KAI */ \ + OP(L'ข', Key_Minus) /* U+0e02, XKB_KEY_Thai_khokhai, THAI CHARACTER KHO KHAI */ \ + OP(L'ฃ', Key_NonUsPound) /* U+0e03, XKB_KEY_Thai_khokhuat, THAI CHARACTER KHO KHUAT */ \ + OP(L'ค', Key_8) /* U+0e04, XKB_KEY_Thai_khokhwai, THAI CHARACTER KHO KHWAI */ \ + OP(L'ฅ', LSHIFT(Key_NonUsPound)) /* U+0e05, XKB_KEY_Thai_khokhon, THAI CHARACTER KHO KHON */ \ + OP(L'ฆ', LSHIFT(Key_S)) /* U+0e06, XKB_KEY_Thai_khorakhang, THAI CHARACTER KHO RAKHANG */ \ + OP(L'ง', Key_Quote) /* U+0e07, XKB_KEY_Thai_ngongu, THAI CHARACTER NGO NGU */ \ + OP(L'จ', Key_0) /* U+0e08, XKB_KEY_Thai_chochan, THAI CHARACTER CHO CHAN */ \ + OP(L'ฉ', LSHIFT(Key_C)) /* U+0e09, XKB_KEY_Thai_choching, THAI CHARACTER CHO CHING */ \ + OP(L'ช', Key_Equals) /* U+0e0a, XKB_KEY_Thai_chochang, THAI CHARACTER CHO CHANG */ \ + OP(L'ซ', LSHIFT(Key_Semicolon)) /* U+0e0b, XKB_KEY_Thai_soso, THAI CHARACTER SO SO */ \ + OP(L'ฌ', LSHIFT(Key_G)) /* U+0e0c, XKB_KEY_Thai_chochoe, THAI CHARACTER CHO CHOE */ \ + OP(L'ญ', LSHIFT(Key_P)) /* U+0e0d, XKB_KEY_Thai_yoying, THAI CHARACTER YO YING */ \ + OP(L'ฎ', LSHIFT(Key_E)) /* U+0e0e, XKB_KEY_Thai_dochada, THAI CHARACTER DO CHADA */ \ + OP(L'ฏ', LSHIFT(Key_D)) /* U+0e0f, XKB_KEY_Thai_topatak, THAI CHARACTER TO PATAK */ \ + OP(L'ฐ', LSHIFT(Key_LeftBracket)) /* U+0e10, XKB_KEY_Thai_thothan, THAI CHARACTER THO THAN */ \ + OP(L'ฑ', LSHIFT(Key_R)) /* U+0e11, XKB_KEY_Thai_thonangmontho, THAI CHARACTER THO NANGMONTHO */ \ + OP(L'ฒ', LSHIFT(Key_Comma)) /* U+0e12, XKB_KEY_Thai_thophuthao, THAI CHARACTER THO PHUTHAO */ \ + OP(L'ณ', LSHIFT(Key_I)) /* U+0e13, XKB_KEY_Thai_nonen, THAI CHARACTER NO NEN */ \ + OP(L'ด', Key_F) /* U+0e14, XKB_KEY_Thai_dodek, THAI CHARACTER DO DEK */ \ + OP(L'ต', Key_9) /* U+0e15, XKB_KEY_Thai_totao, THAI CHARACTER TO TAO */ \ + OP(L'ถ', Key_5) /* U+0e16, XKB_KEY_Thai_thothung, THAI CHARACTER THO THUNG */ \ + OP(L'ท', Key_M) /* U+0e17, XKB_KEY_Thai_thothahan, THAI CHARACTER THO THAHAN */ \ + OP(L'ธ', LSHIFT(Key_T)) /* U+0e18, XKB_KEY_Thai_thothong, THAI CHARACTER THO THONG */ \ + OP(L'น', Key_O) /* U+0e19, XKB_KEY_Thai_nonu, THAI CHARACTER NO NU */ \ + OP(L'บ', Key_LeftBracket) /* U+0e1a, XKB_KEY_Thai_bobaimai, THAI CHARACTER BO BAIMAI */ \ + OP(L'ป', Key_X) /* U+0e1b, XKB_KEY_Thai_popla, THAI CHARACTER PO PLA */ \ + OP(L'ผ', Key_Z) /* U+0e1c, XKB_KEY_Thai_phophung, THAI CHARACTER PHO PHUNG */ \ + OP(L'ฝ', Key_Slash) /* U+0e1d, XKB_KEY_Thai_fofa, THAI CHARACTER FO FA */ \ + OP(L'พ', Key_R) /* U+0e1e, XKB_KEY_Thai_phophan, THAI CHARACTER PHO PHAN */ \ + OP(L'ฟ', Key_A) /* U+0e1f, XKB_KEY_Thai_fofan, THAI CHARACTER FO FAN */ \ + OP(L'ภ', Key_4) /* U+0e20, XKB_KEY_Thai_phosamphao, THAI CHARACTER PHO SAMPHAO */ \ + OP(L'ม', Key_Comma) /* U+0e21, XKB_KEY_Thai_moma, THAI CHARACTER MO MA */ \ + OP(L'ย', Key_P) /* U+0e22, XKB_KEY_Thai_yoyak, THAI CHARACTER YO YAK */ \ + OP(L'ร', Key_I) /* U+0e23, XKB_KEY_Thai_rorua, THAI CHARACTER RO RUA */ \ + OP(L'ฤ', LSHIFT(Key_A)) /* U+0e24, XKB_KEY_Thai_ru, THAI CHARACTER RU */ \ + OP(L'ล', Key_RightBracket) /* U+0e25, XKB_KEY_Thai_loling, THAI CHARACTER LO LING */ \ + OP(L'ฦ', LSHIFT(Key_Slash)) /* U+0e26, XKB_KEY_Thai_lu, THAI CHARACTER LU */ \ + OP(L'ว', Key_Semicolon) /* U+0e27, XKB_KEY_Thai_wowaen, THAI CHARACTER WO WAEN */ \ + OP(L'ศ', LSHIFT(Key_L)) /* U+0e28, XKB_KEY_Thai_sosala, THAI CHARACTER SO SALA */ \ + OP(L'ษ', LSHIFT(Key_K)) /* U+0e29, XKB_KEY_Thai_sorusi, THAI CHARACTER SO RUSI */ \ + OP(L'ส', Key_L) /* U+0e2a, XKB_KEY_Thai_sosua, THAI CHARACTER SO SUA */ \ + OP(L'ห', Key_S) /* U+0e2b, XKB_KEY_Thai_hohip, THAI CHARACTER HO HIP */ \ + OP(L'ฬ', LSHIFT(Key_Period)) /* U+0e2c, XKB_KEY_Thai_lochula, THAI CHARACTER LO CHULA */ \ + OP(L'อ', Key_V) /* U+0e2d, XKB_KEY_Thai_oang, THAI CHARACTER O ANG */ \ + OP(L'ฮ', LSHIFT(Key_V)) /* U+0e2e, XKB_KEY_Thai_honokhuk, THAI CHARACTER HO NOKHUK */ \ + OP(L'ฯ', LSHIFT(Key_O)) /* U+0e2f, XKB_KEY_Thai_paiyannoi, THAI CHARACTER PAIYANNOI */ \ + OP(L'ะ', Key_T) /* U+0e30, XKB_KEY_Thai_saraa, THAI CHARACTER SARA A */ \ + OP(L'ั', Key_Y) /* U+0e31, XKB_KEY_Thai_maihanakat, THAI CHARACTER MAI HAN-AKAT */ \ + OP(L'า', Key_K) /* U+0e32, XKB_KEY_Thai_saraaa, THAI CHARACTER SARA AA */ \ + OP(L'ำ', Key_E) /* U+0e33, XKB_KEY_Thai_saraam, THAI CHARACTER SARA AM */ \ + OP(L'ิ', Key_B) /* U+0e34, XKB_KEY_Thai_sarai, THAI CHARACTER SARA I */ \ + OP(L'ี', Key_U) /* U+0e35, XKB_KEY_Thai_saraii, THAI CHARACTER SARA II */ \ + OP(L'ึ', Key_7) /* U+0e36, XKB_KEY_Thai_saraue, THAI CHARACTER SARA UE */ \ + OP(L'ื', Key_N) /* U+0e37, XKB_KEY_Thai_sarauee, THAI CHARACTER SARA UEE */ \ + OP(L'ุ', Key_6) /* U+0e38, XKB_KEY_Thai_sarau, THAI CHARACTER SARA U */ \ + OP(L'ู', LSHIFT(Key_6)) /* U+0e39, XKB_KEY_Thai_sarauu, THAI CHARACTER SARA UU */ \ + OP(L'ฺ', LSHIFT(Key_B)) /* U+0e3a, XKB_KEY_Thai_phinthu, THAI CHARACTER PHINTHU */ \ + OP(L'฿', LSHIFT(Key_7)) /* U+0e3f, XKB_KEY_Thai_baht, THAI CURRENCY SYMBOL BAHT */ \ + OP(L'เ', Key_G) /* U+0e40, XKB_KEY_Thai_sarae, THAI CHARACTER SARA E */ \ + OP(L'แ', Key_C) /* U+0e41, XKB_KEY_Thai_saraae, THAI CHARACTER SARA AE */ \ + OP(L'โ', LSHIFT(Key_F)) /* U+0e42, XKB_KEY_Thai_sarao, THAI CHARACTER SARA O */ \ + OP(L'ใ', Key_Period) /* U+0e43, XKB_KEY_Thai_saraaimaimuan, THAI CHARACTER SARA AI MAIMUAN */ \ + OP(L'ไ', Key_W) /* U+0e44, XKB_KEY_Thai_saraaimaimalai, THAI CHARACTER SARA AI MAIMALAI */ \ + OP(L'ๅ', Key_1) /* U+0e45, XKB_KEY_Thai_lakkhangyao, THAI CHARACTER LAKKHANGYAO */ \ + OP(L'ๆ', Key_Q) /* U+0e46, XKB_KEY_Thai_maiyamok, THAI CHARACTER MAIYAMOK */ \ + OP(L'็', LSHIFT(Key_H)) /* U+0e47, XKB_KEY_Thai_maitaikhu, THAI CHARACTER MAITAIKHU */ \ + OP(L'่', Key_J) /* U+0e48, XKB_KEY_Thai_maiek, THAI CHARACTER MAI EK */ \ + OP(L'้', Key_H) /* U+0e49, XKB_KEY_Thai_maitho, THAI CHARACTER MAI THO */ \ + OP(L'๊', LSHIFT(Key_U)) /* U+0e4a, XKB_KEY_Thai_maitri, THAI CHARACTER MAI TRI */ \ + OP(L'๋', LSHIFT(Key_J)) /* U+0e4b, XKB_KEY_Thai_maichattawa, THAI CHARACTER MAI CHATTAWA */ \ + OP(L'์', LSHIFT(Key_N)) /* U+0e4c, XKB_KEY_Thai_thanthakhat, THAI CHARACTER THANTHAKHAT */ \ + OP(L'ํ', LSHIFT(Key_Y)) /* U+0e4d, XKB_KEY_Thai_nikhahit, THAI CHARACTER NIKHAHIT */ \ + OP(L'๐', LSHIFT(Key_Q)) /* U+0e50, XKB_KEY_Thai_leksun, THAI DIGIT ZERO */ \ + OP(L'๑', LSHIFT(Key_2)) /* U+0e51, XKB_KEY_Thai_leknung, THAI DIGIT ONE */ \ + OP(L'๒', LSHIFT(Key_3)) /* U+0e52, XKB_KEY_Thai_leksong, THAI DIGIT TWO */ \ + OP(L'๓', LSHIFT(Key_4)) /* U+0e53, XKB_KEY_Thai_leksam, THAI DIGIT THREE */ \ + OP(L'๔', LSHIFT(Key_5)) /* U+0e54, XKB_KEY_Thai_leksi, THAI DIGIT FOUR */ \ + OP(L'๕', LSHIFT(Key_8)) /* U+0e55, XKB_KEY_Thai_lekha, THAI DIGIT FIVE */ \ + OP(L'๖', LSHIFT(Key_9)) /* U+0e56, XKB_KEY_Thai_lekhok, THAI DIGIT SIX */ \ + OP(L'๗', LSHIFT(Key_0)) /* U+0e57, XKB_KEY_Thai_lekchet, THAI DIGIT SEVEN */ \ + OP(L'๘', LSHIFT(Key_Minus)) /* U+0e58, XKB_KEY_Thai_lekpaet, THAI DIGIT EIGHT */ \ + OP(L'๙', LSHIFT(Key_Equals)) /* U+0e59, XKB_KEY_Thai_lekkao, THAI DIGIT NINE */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Thai_baht, LSHIFT(Key_7)) \ + OP(XKB_KEY_Thai_bobaimai, Key_LeftBracket) \ + OP(XKB_KEY_Thai_chochan, Key_0) \ + OP(XKB_KEY_Thai_chochang, Key_Equals) \ + OP(XKB_KEY_Thai_choching, LSHIFT(Key_C)) \ + OP(XKB_KEY_Thai_chochoe, LSHIFT(Key_G)) \ + OP(XKB_KEY_Thai_dochada, LSHIFT(Key_E)) \ + OP(XKB_KEY_Thai_dodek, Key_F) \ + OP(XKB_KEY_Thai_fofa, Key_Slash) \ + OP(XKB_KEY_Thai_fofan, Key_A) \ + OP(XKB_KEY_Thai_hohip, Key_S) \ + OP(XKB_KEY_Thai_honokhuk, LSHIFT(Key_V)) \ + OP(XKB_KEY_Thai_khokhai, Key_Minus) \ + OP(XKB_KEY_Thai_khokhon, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Thai_khokhuat, Key_NonUsPound) \ + OP(XKB_KEY_Thai_khokhwai, Key_8) \ + OP(XKB_KEY_Thai_khorakhang, LSHIFT(Key_S)) \ + OP(XKB_KEY_Thai_kokai, Key_D) \ + OP(XKB_KEY_Thai_lakkhangyao, Key_1) \ + OP(XKB_KEY_Thai_lekchet, LSHIFT(Key_0)) \ + OP(XKB_KEY_Thai_lekha, LSHIFT(Key_8)) \ + OP(XKB_KEY_Thai_lekhok, LSHIFT(Key_9)) \ + OP(XKB_KEY_Thai_lekkao, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Thai_leknung, LSHIFT(Key_2)) \ + OP(XKB_KEY_Thai_lekpaet, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Thai_leksam, LSHIFT(Key_4)) \ + OP(XKB_KEY_Thai_leksi, LSHIFT(Key_5)) \ + OP(XKB_KEY_Thai_leksong, LSHIFT(Key_3)) \ + OP(XKB_KEY_Thai_leksun, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Thai_lochula, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Thai_loling, Key_RightBracket) \ + OP(XKB_KEY_Thai_lu, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Thai_maichattawa, LSHIFT(Key_J)) \ + OP(XKB_KEY_Thai_maiek, Key_J) \ + OP(XKB_KEY_Thai_maihanakat, Key_Y) \ + OP(XKB_KEY_Thai_maitaikhu, LSHIFT(Key_H)) \ + OP(XKB_KEY_Thai_maitho, Key_H) \ + OP(XKB_KEY_Thai_maitri, LSHIFT(Key_U)) \ + OP(XKB_KEY_Thai_maiyamok, Key_Q) \ + OP(XKB_KEY_Thai_moma, Key_Comma) \ + OP(XKB_KEY_Thai_ngongu, Key_Quote) \ + OP(XKB_KEY_Thai_nikhahit, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Thai_nonen, LSHIFT(Key_I)) \ + OP(XKB_KEY_Thai_nonu, Key_O) \ + OP(XKB_KEY_Thai_oang, Key_V) \ + OP(XKB_KEY_Thai_paiyannoi, LSHIFT(Key_O)) \ + OP(XKB_KEY_Thai_phinthu, LSHIFT(Key_B)) \ + OP(XKB_KEY_Thai_phophan, Key_R) \ + OP(XKB_KEY_Thai_phophung, Key_Z) \ + OP(XKB_KEY_Thai_phosamphao, Key_4) \ + OP(XKB_KEY_Thai_popla, Key_X) \ + OP(XKB_KEY_Thai_rorua, Key_I) \ + OP(XKB_KEY_Thai_ru, LSHIFT(Key_A)) \ + OP(XKB_KEY_Thai_saraa, Key_T) \ + OP(XKB_KEY_Thai_saraaa, Key_K) \ + OP(XKB_KEY_Thai_saraae, Key_C) \ + OP(XKB_KEY_Thai_saraaimaimalai, Key_W) \ + OP(XKB_KEY_Thai_saraaimaimuan, Key_Period) \ + OP(XKB_KEY_Thai_saraam, Key_E) \ + OP(XKB_KEY_Thai_sarae, Key_G) \ + OP(XKB_KEY_Thai_sarai, Key_B) \ + OP(XKB_KEY_Thai_saraii, Key_U) \ + OP(XKB_KEY_Thai_sarao, LSHIFT(Key_F)) \ + OP(XKB_KEY_Thai_sarau, Key_6) \ + OP(XKB_KEY_Thai_saraue, Key_7) \ + OP(XKB_KEY_Thai_sarauee, Key_N) \ + OP(XKB_KEY_Thai_sarauu, LSHIFT(Key_6)) \ + OP(XKB_KEY_Thai_sorusi, LSHIFT(Key_K)) \ + OP(XKB_KEY_Thai_sosala, LSHIFT(Key_L)) \ + OP(XKB_KEY_Thai_soso, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Thai_sosua, Key_L) \ + OP(XKB_KEY_Thai_thanthakhat, LSHIFT(Key_N)) \ + OP(XKB_KEY_Thai_thonangmontho, LSHIFT(Key_R)) \ + OP(XKB_KEY_Thai_thophuthao, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Thai_thothahan, Key_M) \ + OP(XKB_KEY_Thai_thothan, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Thai_thothong, LSHIFT(Key_T)) \ + OP(XKB_KEY_Thai_thothung, Key_5) \ + OP(XKB_KEY_Thai_topatak, LSHIFT(Key_D)) \ + OP(XKB_KEY_Thai_totao, Key_9) \ + OP(XKB_KEY_Thai_wowaen, Key_Semicolon) \ + OP(XKB_KEY_Thai_yoyak, Key_P) \ + OP(XKB_KEY_Thai_yoying, LSHIFT(Key_P)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_comma, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_3) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_Z)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_X)) \ + OP(XKB_KEY_percent, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_period, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_plus, LSHIFT(Key_1)) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_W)) \ + OP(XKB_KEY_slash, Key_2) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, Key_Backtick) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace th { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace th +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/th/tis/keymap.h b/src/kaleidoscope/host_keymap/linux/th/tis/keymap.h new file mode 100644 index 0000000000..0f983c0737 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/th/tis/keymap.h @@ -0,0 +1,380 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: th +// variant: tis + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('"', LSHIFT(Key_W)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('(', LSHIFT(Key_Z)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_X)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_RightBracket)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_3) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_Quote)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_2) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'"', LSHIFT(Key_W)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'(', LSHIFT(Key_Z)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_X)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_RightBracket)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_3) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_Quote)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_2) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_M)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'ก', Key_D) /* U+0e01, XKB_KEY_Thai_kokai, THAI CHARACTER KO KAI */ \ + OP(L'ข', Key_Minus) /* U+0e02, XKB_KEY_Thai_khokhai, THAI CHARACTER KHO KHAI */ \ + OP(L'ฃ', LSHIFT(Key_NonUsPound)) /* U+0e03, XKB_KEY_Thai_khokhuat, THAI CHARACTER KHO KHUAT */ \ + OP(L'ค', Key_8) /* U+0e04, XKB_KEY_Thai_khokhwai, THAI CHARACTER KHO KHWAI */ \ + OP(L'ฅ', Key_NonUsPound) /* U+0e05, XKB_KEY_Thai_khokhon, THAI CHARACTER KHO KHON */ \ + OP(L'ฆ', LSHIFT(Key_S)) /* U+0e06, XKB_KEY_Thai_khorakhang, THAI CHARACTER KHO RAKHANG */ \ + OP(L'ง', Key_Quote) /* U+0e07, XKB_KEY_Thai_ngongu, THAI CHARACTER NGO NGU */ \ + OP(L'จ', Key_0) /* U+0e08, XKB_KEY_Thai_chochan, THAI CHARACTER CHO CHAN */ \ + OP(L'ฉ', LSHIFT(Key_C)) /* U+0e09, XKB_KEY_Thai_choching, THAI CHARACTER CHO CHING */ \ + OP(L'ช', Key_Equals) /* U+0e0a, XKB_KEY_Thai_chochang, THAI CHARACTER CHO CHANG */ \ + OP(L'ซ', LSHIFT(Key_Semicolon)) /* U+0e0b, XKB_KEY_Thai_soso, THAI CHARACTER SO SO */ \ + OP(L'ฌ', LSHIFT(Key_G)) /* U+0e0c, XKB_KEY_Thai_chochoe, THAI CHARACTER CHO CHOE */ \ + OP(L'ญ', LSHIFT(Key_P)) /* U+0e0d, XKB_KEY_Thai_yoying, THAI CHARACTER YO YING */ \ + OP(L'ฎ', LSHIFT(Key_E)) /* U+0e0e, XKB_KEY_Thai_dochada, THAI CHARACTER DO CHADA */ \ + OP(L'ฏ', LSHIFT(Key_D)) /* U+0e0f, XKB_KEY_Thai_topatak, THAI CHARACTER TO PATAK */ \ + OP(L'ฐ', LSHIFT(Key_LeftBracket)) /* U+0e10, XKB_KEY_Thai_thothan, THAI CHARACTER THO THAN */ \ + OP(L'ฑ', LSHIFT(Key_R)) /* U+0e11, XKB_KEY_Thai_thonangmontho, THAI CHARACTER THO NANGMONTHO */ \ + OP(L'ฒ', LSHIFT(Key_Comma)) /* U+0e12, XKB_KEY_Thai_thophuthao, THAI CHARACTER THO PHUTHAO */ \ + OP(L'ณ', LSHIFT(Key_I)) /* U+0e13, XKB_KEY_Thai_nonen, THAI CHARACTER NO NEN */ \ + OP(L'ด', Key_F) /* U+0e14, XKB_KEY_Thai_dodek, THAI CHARACTER DO DEK */ \ + OP(L'ต', Key_9) /* U+0e15, XKB_KEY_Thai_totao, THAI CHARACTER TO TAO */ \ + OP(L'ถ', Key_5) /* U+0e16, XKB_KEY_Thai_thothung, THAI CHARACTER THO THUNG */ \ + OP(L'ท', Key_M) /* U+0e17, XKB_KEY_Thai_thothahan, THAI CHARACTER THO THAHAN */ \ + OP(L'ธ', LSHIFT(Key_T)) /* U+0e18, XKB_KEY_Thai_thothong, THAI CHARACTER THO THONG */ \ + OP(L'น', Key_O) /* U+0e19, XKB_KEY_Thai_nonu, THAI CHARACTER NO NU */ \ + OP(L'บ', Key_LeftBracket) /* U+0e1a, XKB_KEY_Thai_bobaimai, THAI CHARACTER BO BAIMAI */ \ + OP(L'ป', Key_X) /* U+0e1b, XKB_KEY_Thai_popla, THAI CHARACTER PO PLA */ \ + OP(L'ผ', Key_Z) /* U+0e1c, XKB_KEY_Thai_phophung, THAI CHARACTER PHO PHUNG */ \ + OP(L'ฝ', Key_Slash) /* U+0e1d, XKB_KEY_Thai_fofa, THAI CHARACTER FO FA */ \ + OP(L'พ', Key_R) /* U+0e1e, XKB_KEY_Thai_phophan, THAI CHARACTER PHO PHAN */ \ + OP(L'ฟ', Key_A) /* U+0e1f, XKB_KEY_Thai_fofan, THAI CHARACTER FO FAN */ \ + OP(L'ภ', Key_4) /* U+0e20, XKB_KEY_Thai_phosamphao, THAI CHARACTER PHO SAMPHAO */ \ + OP(L'ม', Key_Comma) /* U+0e21, XKB_KEY_Thai_moma, THAI CHARACTER MO MA */ \ + OP(L'ย', Key_P) /* U+0e22, XKB_KEY_Thai_yoyak, THAI CHARACTER YO YAK */ \ + OP(L'ร', Key_I) /* U+0e23, XKB_KEY_Thai_rorua, THAI CHARACTER RO RUA */ \ + OP(L'ฤ', LSHIFT(Key_A)) /* U+0e24, XKB_KEY_Thai_ru, THAI CHARACTER RU */ \ + OP(L'ล', Key_RightBracket) /* U+0e25, XKB_KEY_Thai_loling, THAI CHARACTER LO LING */ \ + OP(L'ฦ', LSHIFT(Key_Slash)) /* U+0e26, XKB_KEY_Thai_lu, THAI CHARACTER LU */ \ + OP(L'ว', Key_Semicolon) /* U+0e27, XKB_KEY_Thai_wowaen, THAI CHARACTER WO WAEN */ \ + OP(L'ศ', LSHIFT(Key_L)) /* U+0e28, XKB_KEY_Thai_sosala, THAI CHARACTER SO SALA */ \ + OP(L'ษ', LSHIFT(Key_K)) /* U+0e29, XKB_KEY_Thai_sorusi, THAI CHARACTER SO RUSI */ \ + OP(L'ส', Key_L) /* U+0e2a, XKB_KEY_Thai_sosua, THAI CHARACTER SO SUA */ \ + OP(L'ห', Key_S) /* U+0e2b, XKB_KEY_Thai_hohip, THAI CHARACTER HO HIP */ \ + OP(L'ฬ', LSHIFT(Key_Period)) /* U+0e2c, XKB_KEY_Thai_lochula, THAI CHARACTER LO CHULA */ \ + OP(L'อ', Key_V) /* U+0e2d, XKB_KEY_Thai_oang, THAI CHARACTER O ANG */ \ + OP(L'ฮ', LSHIFT(Key_V)) /* U+0e2e, XKB_KEY_Thai_honokhuk, THAI CHARACTER HO NOKHUK */ \ + OP(L'ฯ', LSHIFT(Key_O)) /* U+0e2f, XKB_KEY_Thai_paiyannoi, THAI CHARACTER PAIYANNOI */ \ + OP(L'ะ', Key_T) /* U+0e30, XKB_KEY_Thai_saraa, THAI CHARACTER SARA A */ \ + OP(L'ั', Key_Y) /* U+0e31, XKB_KEY_Thai_maihanakat, THAI CHARACTER MAI HAN-AKAT */ \ + OP(L'า', Key_K) /* U+0e32, XKB_KEY_Thai_saraaa, THAI CHARACTER SARA AA */ \ + OP(L'ำ', Key_E) /* U+0e33, XKB_KEY_Thai_saraam, THAI CHARACTER SARA AM */ \ + OP(L'ิ', Key_B) /* U+0e34, XKB_KEY_Thai_sarai, THAI CHARACTER SARA I */ \ + OP(L'ี', Key_U) /* U+0e35, XKB_KEY_Thai_saraii, THAI CHARACTER SARA II */ \ + OP(L'ึ', Key_7) /* U+0e36, XKB_KEY_Thai_saraue, THAI CHARACTER SARA UE */ \ + OP(L'ื', Key_N) /* U+0e37, XKB_KEY_Thai_sarauee, THAI CHARACTER SARA UEE */ \ + OP(L'ุ', Key_6) /* U+0e38, XKB_KEY_Thai_sarau, THAI CHARACTER SARA U */ \ + OP(L'ู', LSHIFT(Key_6)) /* U+0e39, XKB_KEY_Thai_sarauu, THAI CHARACTER SARA UU */ \ + OP(L'ฺ', LSHIFT(Key_B)) /* U+0e3a, XKB_KEY_Thai_phinthu, THAI CHARACTER PHINTHU */ \ + OP(L'฿', Key_1) /* U+0e3f, XKB_KEY_Thai_baht, THAI CURRENCY SYMBOL BAHT */ \ + OP(L'เ', Key_G) /* U+0e40, XKB_KEY_Thai_sarae, THAI CHARACTER SARA E */ \ + OP(L'แ', Key_C) /* U+0e41, XKB_KEY_Thai_saraae, THAI CHARACTER SARA AE */ \ + OP(L'โ', LSHIFT(Key_F)) /* U+0e42, XKB_KEY_Thai_sarao, THAI CHARACTER SARA O */ \ + OP(L'ใ', Key_Period) /* U+0e43, XKB_KEY_Thai_saraaimaimuan, THAI CHARACTER SARA AI MAIMUAN */ \ + OP(L'ไ', Key_W) /* U+0e44, XKB_KEY_Thai_saraaimaimalai, THAI CHARACTER SARA AI MAIMALAI */ \ + OP(L'ๅ', LSHIFT(Key_1)) /* U+0e45, XKB_KEY_Thai_lakkhangyao, THAI CHARACTER LAKKHANGYAO */ \ + OP(L'ๆ', Key_Q) /* U+0e46, XKB_KEY_Thai_maiyamok, THAI CHARACTER MAIYAMOK */ \ + OP(L'็', LSHIFT(Key_H)) /* U+0e47, XKB_KEY_Thai_maitaikhu, THAI CHARACTER MAITAIKHU */ \ + OP(L'่', Key_J) /* U+0e48, XKB_KEY_Thai_maiek, THAI CHARACTER MAI EK */ \ + OP(L'้', Key_H) /* U+0e49, XKB_KEY_Thai_maitho, THAI CHARACTER MAI THO */ \ + OP(L'๊', LSHIFT(Key_U)) /* U+0e4a, XKB_KEY_Thai_maitri, THAI CHARACTER MAI TRI */ \ + OP(L'๋', LSHIFT(Key_J)) /* U+0e4b, XKB_KEY_Thai_maichattawa, THAI CHARACTER MAI CHATTAWA */ \ + OP(L'์', LSHIFT(Key_N)) /* U+0e4c, XKB_KEY_Thai_thanthakhat, THAI CHARACTER THANTHAKHAT */ \ + OP(L'ํ', LSHIFT(Key_Y)) /* U+0e4d, XKB_KEY_Thai_nikhahit, THAI CHARACTER NIKHAHIT */ \ + OP(L'๎', LSHIFT(Key_7)) \ + OP(L'๏', Key_Backtick) \ + OP(L'๐', LSHIFT(Key_Q)) /* U+0e50, XKB_KEY_Thai_leksun, THAI DIGIT ZERO */ \ + OP(L'๑', LSHIFT(Key_2)) /* U+0e51, XKB_KEY_Thai_leknung, THAI DIGIT ONE */ \ + OP(L'๒', LSHIFT(Key_3)) /* U+0e52, XKB_KEY_Thai_leksong, THAI DIGIT TWO */ \ + OP(L'๓', LSHIFT(Key_4)) /* U+0e53, XKB_KEY_Thai_leksam, THAI DIGIT THREE */ \ + OP(L'๔', LSHIFT(Key_5)) /* U+0e54, XKB_KEY_Thai_leksi, THAI DIGIT FOUR */ \ + OP(L'๕', LSHIFT(Key_8)) /* U+0e55, XKB_KEY_Thai_lekha, THAI DIGIT FIVE */ \ + OP(L'๖', LSHIFT(Key_9)) /* U+0e56, XKB_KEY_Thai_lekhok, THAI DIGIT SIX */ \ + OP(L'๗', LSHIFT(Key_0)) /* U+0e57, XKB_KEY_Thai_lekchet, THAI DIGIT SEVEN */ \ + OP(L'๘', LSHIFT(Key_Minus)) /* U+0e58, XKB_KEY_Thai_lekpaet, THAI DIGIT EIGHT */ \ + OP(L'๙', LSHIFT(Key_Equals)) /* U+0e59, XKB_KEY_Thai_lekkao, THAI DIGIT NINE */ \ + OP(L'๛', LSHIFT(Key_Backtick)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Thai_baht, Key_1) \ + OP(XKB_KEY_Thai_bobaimai, Key_LeftBracket) \ + OP(XKB_KEY_Thai_chochan, Key_0) \ + OP(XKB_KEY_Thai_chochang, Key_Equals) \ + OP(XKB_KEY_Thai_choching, LSHIFT(Key_C)) \ + OP(XKB_KEY_Thai_chochoe, LSHIFT(Key_G)) \ + OP(XKB_KEY_Thai_dochada, LSHIFT(Key_E)) \ + OP(XKB_KEY_Thai_dodek, Key_F) \ + OP(XKB_KEY_Thai_fofa, Key_Slash) \ + OP(XKB_KEY_Thai_fofan, Key_A) \ + OP(XKB_KEY_Thai_hohip, Key_S) \ + OP(XKB_KEY_Thai_honokhuk, LSHIFT(Key_V)) \ + OP(XKB_KEY_Thai_khokhai, Key_Minus) \ + OP(XKB_KEY_Thai_khokhon, Key_NonUsPound) \ + OP(XKB_KEY_Thai_khokhuat, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Thai_khokhwai, Key_8) \ + OP(XKB_KEY_Thai_khorakhang, LSHIFT(Key_S)) \ + OP(XKB_KEY_Thai_kokai, Key_D) \ + OP(XKB_KEY_Thai_lakkhangyao, LSHIFT(Key_1)) \ + OP(XKB_KEY_Thai_lekchet, LSHIFT(Key_0)) \ + OP(XKB_KEY_Thai_lekha, LSHIFT(Key_8)) \ + OP(XKB_KEY_Thai_lekhok, LSHIFT(Key_9)) \ + OP(XKB_KEY_Thai_lekkao, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Thai_leknung, LSHIFT(Key_2)) \ + OP(XKB_KEY_Thai_lekpaet, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Thai_leksam, LSHIFT(Key_4)) \ + OP(XKB_KEY_Thai_leksi, LSHIFT(Key_5)) \ + OP(XKB_KEY_Thai_leksong, LSHIFT(Key_3)) \ + OP(XKB_KEY_Thai_leksun, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Thai_lochula, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Thai_loling, Key_RightBracket) \ + OP(XKB_KEY_Thai_lu, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Thai_maichattawa, LSHIFT(Key_J)) \ + OP(XKB_KEY_Thai_maiek, Key_J) \ + OP(XKB_KEY_Thai_maihanakat, Key_Y) \ + OP(XKB_KEY_Thai_maitaikhu, LSHIFT(Key_H)) \ + OP(XKB_KEY_Thai_maitho, Key_H) \ + OP(XKB_KEY_Thai_maitri, LSHIFT(Key_U)) \ + OP(XKB_KEY_Thai_maiyamok, Key_Q) \ + OP(XKB_KEY_Thai_moma, Key_Comma) \ + OP(XKB_KEY_Thai_ngongu, Key_Quote) \ + OP(XKB_KEY_Thai_nikhahit, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Thai_nonen, LSHIFT(Key_I)) \ + OP(XKB_KEY_Thai_nonu, Key_O) \ + OP(XKB_KEY_Thai_oang, Key_V) \ + OP(XKB_KEY_Thai_paiyannoi, LSHIFT(Key_O)) \ + OP(XKB_KEY_Thai_phinthu, LSHIFT(Key_B)) \ + OP(XKB_KEY_Thai_phophan, Key_R) \ + OP(XKB_KEY_Thai_phophung, Key_Z) \ + OP(XKB_KEY_Thai_phosamphao, Key_4) \ + OP(XKB_KEY_Thai_popla, Key_X) \ + OP(XKB_KEY_Thai_rorua, Key_I) \ + OP(XKB_KEY_Thai_ru, LSHIFT(Key_A)) \ + OP(XKB_KEY_Thai_saraa, Key_T) \ + OP(XKB_KEY_Thai_saraaa, Key_K) \ + OP(XKB_KEY_Thai_saraae, Key_C) \ + OP(XKB_KEY_Thai_saraaimaimalai, Key_W) \ + OP(XKB_KEY_Thai_saraaimaimuan, Key_Period) \ + OP(XKB_KEY_Thai_saraam, Key_E) \ + OP(XKB_KEY_Thai_sarae, Key_G) \ + OP(XKB_KEY_Thai_sarai, Key_B) \ + OP(XKB_KEY_Thai_saraii, Key_U) \ + OP(XKB_KEY_Thai_sarao, LSHIFT(Key_F)) \ + OP(XKB_KEY_Thai_sarau, Key_6) \ + OP(XKB_KEY_Thai_saraue, Key_7) \ + OP(XKB_KEY_Thai_sarauee, Key_N) \ + OP(XKB_KEY_Thai_sarauu, LSHIFT(Key_6)) \ + OP(XKB_KEY_Thai_sorusi, LSHIFT(Key_K)) \ + OP(XKB_KEY_Thai_sosala, LSHIFT(Key_L)) \ + OP(XKB_KEY_Thai_soso, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Thai_sosua, Key_L) \ + OP(XKB_KEY_Thai_thanthakhat, LSHIFT(Key_N)) \ + OP(XKB_KEY_Thai_thonangmontho, LSHIFT(Key_R)) \ + OP(XKB_KEY_Thai_thophuthao, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Thai_thothahan, Key_M) \ + OP(XKB_KEY_Thai_thothan, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Thai_thothong, LSHIFT(Key_T)) \ + OP(XKB_KEY_Thai_thothung, Key_5) \ + OP(XKB_KEY_Thai_topatak, LSHIFT(Key_D)) \ + OP(XKB_KEY_Thai_totao, Key_9) \ + OP(XKB_KEY_Thai_wowaen, Key_Semicolon) \ + OP(XKB_KEY_Thai_yoyak, Key_P) \ + OP(XKB_KEY_Thai_yoying, LSHIFT(Key_P)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_comma, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_3) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_Z)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_X)) \ + OP(XKB_KEY_period, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_question, LSHIFT(Key_M)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_W)) \ + OP(XKB_KEY_slash, Key_2) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace th { +namespace tis { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace tis +} // namespace th +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/tj/legacy/keymap.h b/src/kaleidoscope/host_keymap/linux/tj/legacy/keymap.h new file mode 100644 index 0000000000..3f03f10efe --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/tj/legacy/keymap.h @@ -0,0 +1,407 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: tj +// variant: legacy + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_1)) \ + OP(L'«', RALT(Key_2)) \ + OP(L'»', RALT(LSHIFT(Key_2))) \ + OP(L'Ё', LSHIFT(Key_Backtick)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Backtick) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'Ғ', RALT(LSHIFT(Key_U))) /* U+0492, XKB_KEY_Cyrillic_GHE_bar, CYRILLIC CAPITAL LETTER GHE WITH STROKE */ \ + OP(L'ғ', RALT(Key_U)) /* U+0493, XKB_KEY_Cyrillic_ghe_bar, CYRILLIC SMALL LETTER GHE WITH STROKE */ \ + OP(L'Қ', RALT(LSHIFT(Key_R))) /* U+049a, XKB_KEY_Cyrillic_KA_descender, CYRILLIC CAPITAL LETTER KA WITH DESCENDER */ \ + OP(L'қ', RALT(Key_R)) /* U+049b, XKB_KEY_Cyrillic_ka_descender, CYRILLIC SMALL LETTER KA WITH DESCENDER */ \ + OP(L'Ҳ', RALT(LSHIFT(Key_LeftBracket))) /* U+04b2, XKB_KEY_Cyrillic_HA_descender, CYRILLIC CAPITAL LETTER HA WITH DESCENDER */ \ + OP(L'ҳ', RALT(Key_LeftBracket)) /* U+04b3, XKB_KEY_Cyrillic_ha_descender, CYRILLIC SMALL LETTER HA WITH DESCENDER */ \ + OP(L'Ҷ', RALT(LSHIFT(Key_X))) /* U+04b6, XKB_KEY_Cyrillic_CHE_descender, CYRILLIC CAPITAL LETTER CHE WITH DESCENDER */ \ + OP(L'ҷ', RALT(Key_X)) /* U+04b7, XKB_KEY_Cyrillic_che_descender, CYRILLIC SMALL LETTER CHE WITH DESCENDER */ \ + OP(L'Ӣ', RALT(LSHIFT(Key_B))) /* U+04e2, XKB_KEY_Cyrillic_I_macron, CYRILLIC CAPITAL LETTER I WITH MACRON */ \ + OP(L'ӣ', RALT(Key_B)) /* U+04e3, XKB_KEY_Cyrillic_i_macron, CYRILLIC SMALL LETTER I WITH MACRON */ \ + OP(L'Ӯ', RALT(LSHIFT(Key_E))) /* U+04ee, XKB_KEY_Cyrillic_U_macron, CYRILLIC CAPITAL LETTER U WITH MACRON */ \ + OP(L'ӯ', RALT(Key_E)) /* U+04ef, XKB_KEY_Cyrillic_u_macron, CYRILLIC SMALL LETTER U WITH MACRON */ \ + OP(L'–', RALT(Key_6)) \ + OP(L'№', LSHIFT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_CHE_descender, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_GHE_bar, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_HA_descender, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_I_macron, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_KA_descender, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_U_macron, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_che_descender, RALT(Key_X)) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ghe_bar, RALT(Key_U)) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_ha_descender, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_i_macron, RALT(Key_B)) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_ka_descender, RALT(Key_R)) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_u_macron, RALT(Key_E)) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, RALT(Key_7)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_6)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_7)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_4)) \ + OP(XKB_KEY_slash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace tj { +namespace legacy { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace legacy +} // namespace tj +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/tj/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/tj/standard/keymap.h new file mode 100644 index 0000000000..44b5a91ab8 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/tj/standard/keymap.h @@ -0,0 +1,392 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: tj +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', RALT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('_', RALT(LSHIFT(Key_Minus))) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', RALT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', RALT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'_', RALT(LSHIFT(Key_Minus))) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_1)) \ + OP(L'«', RALT(Key_2)) \ + OP(L'°', RALT(Key_0)) \ + OP(L'»', RALT(LSHIFT(Key_2))) \ + OP(L'Ё', LSHIFT(Key_Backtick)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Backtick) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'Ғ', LSHIFT(Key_Minus)) /* U+0492, XKB_KEY_Cyrillic_GHE_bar, CYRILLIC CAPITAL LETTER GHE WITH STROKE */ \ + OP(L'ғ', Key_Minus) /* U+0493, XKB_KEY_Cyrillic_ghe_bar, CYRILLIC SMALL LETTER GHE WITH STROKE */ \ + OP(L'Қ', LSHIFT(Key_W)) /* U+049a, XKB_KEY_Cyrillic_KA_descender, CYRILLIC CAPITAL LETTER KA WITH DESCENDER */ \ + OP(L'қ', Key_W) /* U+049b, XKB_KEY_Cyrillic_ka_descender, CYRILLIC SMALL LETTER KA WITH DESCENDER */ \ + OP(L'Ҳ', LSHIFT(Key_O)) /* U+04b2, XKB_KEY_Cyrillic_HA_descender, CYRILLIC CAPITAL LETTER HA WITH DESCENDER */ \ + OP(L'ҳ', Key_O) /* U+04b3, XKB_KEY_Cyrillic_ha_descender, CYRILLIC SMALL LETTER HA WITH DESCENDER */ \ + OP(L'Ҷ', LSHIFT(Key_S)) /* U+04b6, XKB_KEY_Cyrillic_CHE_descender, CYRILLIC CAPITAL LETTER CHE WITH DESCENDER */ \ + OP(L'ҷ', Key_S) /* U+04b7, XKB_KEY_Cyrillic_che_descender, CYRILLIC SMALL LETTER CHE WITH DESCENDER */ \ + OP(L'Ӣ', LSHIFT(Key_M)) /* U+04e2, XKB_KEY_Cyrillic_I_macron, CYRILLIC CAPITAL LETTER I WITH MACRON */ \ + OP(L'ӣ', Key_M) /* U+04e3, XKB_KEY_Cyrillic_i_macron, CYRILLIC SMALL LETTER I WITH MACRON */ \ + OP(L'Ӯ', LSHIFT(Key_Equals)) /* U+04ee, XKB_KEY_Cyrillic_U_macron, CYRILLIC CAPITAL LETTER U WITH MACRON */ \ + OP(L'ӯ', Key_Equals) /* U+04ef, XKB_KEY_Cyrillic_u_macron, CYRILLIC SMALL LETTER U WITH MACRON */ \ + OP(L'–', RALT(Key_6)) \ + OP(L'№', LSHIFT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_CHE_descender, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_GHE_bar, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_HA_descender, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_I_macron, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_KA_descender, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_U_macron, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_che_descender, Key_S) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ghe_bar, Key_Minus) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_ha_descender, Key_O) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_i_macron, Key_M) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_ka_descender, Key_W) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_u_macron, Key_Equals) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, RALT(Key_7)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_6)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_equal, RALT(Key_Equals)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_minus, RALT(Key_Minus)) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_question, LSHIFT(Key_7)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_4)) \ + OP(XKB_KEY_slash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, RALT(LSHIFT(Key_Minus))) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace tj { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace tj +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/tm/alt/keymap.h b/src/kaleidoscope/host_keymap/linux/tm/alt/keymap.h new file mode 100644 index 0000000000..ebe2486015 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/tm/alt/keymap.h @@ -0,0 +1,472 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: tm +// variant: alt + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ä', RALT(LSHIFT(Key_A))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ö', RALT(LSHIFT(Key_O))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'Ü', RALT(LSHIFT(Key_U))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Ý', RALT(LSHIFT(Key_Y))) /* U+00dd, XKB_KEY_Yacute, LATIN CAPITAL LETTER Y WITH ACUTE */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ö', RALT(Key_O)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ü', RALT(Key_U)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'ý', RALT(Key_Y)) /* U+00fd, XKB_KEY_yacute, LATIN SMALL LETTER Y WITH ACUTE */ \ + OP(L'Ň', RALT(LSHIFT(Key_N))) /* U+0147, XKB_KEY_Ncaron, LATIN CAPITAL LETTER N WITH CARON */ \ + OP(L'ň', RALT(Key_N)) /* U+0148, XKB_KEY_ncaron, LATIN SMALL LETTER N WITH CARON */ \ + OP(L'Ş', RALT(LSHIFT(Key_S))) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', RALT(Key_S)) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ž', RALT(LSHIFT(Key_Z))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_Z)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Ncaron, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Yacute, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_ncaron, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yacute, RALT(Key_Y)) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, RALT(Key_Z)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace tm { +namespace alt { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace alt +} // namespace tm +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/tm/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/tm/standard/keymap.h new file mode 100644 index 0000000000..6851973830 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/tm/standard/keymap.h @@ -0,0 +1,472 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: tm +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', RALT(LSHIFT(Key_C))) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', RALT(LSHIFT(Key_V))) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', RALT(Key_C)) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', RALT(Key_V)) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', RALT(LSHIFT(Key_C))) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', RALT(LSHIFT(Key_Q))) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', RALT(LSHIFT(Key_V))) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', RALT(LSHIFT(Key_X))) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', RALT(Key_C)) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', RALT(Key_Q)) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', RALT(Key_V)) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', RALT(Key_X)) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ä', LSHIFT(Key_Q)) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Ç', LSHIFT(Key_C)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ö', LSHIFT(Key_RightBracket)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'Ü', LSHIFT(Key_X)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Ý', LSHIFT(Key_V)) /* U+00dd, XKB_KEY_Yacute, LATIN CAPITAL LETTER Y WITH ACUTE */ \ + OP(L'ä', Key_Q) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'ç', Key_C) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ö', Key_RightBracket) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ü', Key_X) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'ý', Key_V) /* U+00fd, XKB_KEY_yacute, LATIN SMALL LETTER Y WITH ACUTE */ \ + OP(L'Ň', LSHIFT(Key_LeftBracket)) /* U+0147, XKB_KEY_Ncaron, LATIN CAPITAL LETTER N WITH CARON */ \ + OP(L'ň', Key_LeftBracket) /* U+0148, XKB_KEY_ncaron, LATIN SMALL LETTER N WITH CARON */ \ + OP(L'Ş', LSHIFT(Key_NonUsPound)) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', Key_NonUsPound) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ž', LSHIFT(Key_Backtick)) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', Key_Backtick) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Adiaeresis, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_C)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Ncaron, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_X)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Yacute, LSHIFT(Key_V)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, Key_Q) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_braceright, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, RALT(Key_C)) \ + OP(XKB_KEY_ccedilla, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_ncaron, Key_LeftBracket) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_RightBracket) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, RALT(Key_Q)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, Key_NonUsPound) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_X) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, RALT(Key_V)) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, RALT(Key_X)) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yacute, Key_V) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, Key_Backtick) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace tm { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace tm +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/tr/alt/keymap.h b/src/kaleidoscope/host_keymap/linux/tr/alt/keymap.h new file mode 100644 index 0000000000..2a9aeb3a42 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/tr/alt/keymap.h @@ -0,0 +1,590 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: tr +// variant: alt + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'Â', RALT(LSHIFT(Key_A))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', RALT(LSHIFT(Key_O))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ü', RALT(LSHIFT(Key_U))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'â', RALT(Key_A)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', RALT(Key_O)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ü', RALT(Key_U)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ğ', RALT(LSHIFT(Key_G))) /* U+011e, XKB_KEY_Gbreve, LATIN CAPITAL LETTER G WITH BREVE */ \ + OP(L'ğ', RALT(Key_G)) /* U+011f, XKB_KEY_gbreve, LATIN SMALL LETTER G WITH BREVE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'İ', RALT(LSHIFT(Key_I))) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'ı', RALT(Key_I)) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ş', RALT(LSHIFT(Key_S))) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', RALT(Key_S)) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'─', RALT(Key_Minus)) /* U+2500, XKB_KEY_horizlinescan5, BOX DRAWINGS LIGHT HORIZONTAL */ \ + OP(L'│', RALT(LSHIFT(Key_Minus))) /* U+2502, XKB_KEY_vertbar, BOX DRAWINGS LIGHT VERTICAL */ \ + OP(L'┌', RALT(LSHIFT(Key_7))) /* U+250c, XKB_KEY_upleftcorner, BOX DRAWINGS LIGHT DOWN AND RIGHT */ \ + OP(L'┐', RALT(LSHIFT(Key_0))) /* U+2510, XKB_KEY_uprightcorner, BOX DRAWINGS LIGHT DOWN AND LEFT */ \ + OP(L'└', RALT(Key_7)) /* U+2514, XKB_KEY_lowleftcorner, BOX DRAWINGS LIGHT UP AND RIGHT */ \ + OP(L'┘', RALT(Key_0)) /* U+2518, XKB_KEY_lowrightcorner, BOX DRAWINGS LIGHT UP AND LEFT */ \ + OP(L'├', RALT(Key_8)) /* U+251c, XKB_KEY_leftt, BOX DRAWINGS LIGHT VERTICAL AND RIGHT */ \ + OP(L'┤', RALT(Key_9)) /* U+2524, XKB_KEY_rightt, BOX DRAWINGS LIGHT VERTICAL AND LEFT */ \ + OP(L'┬', RALT(LSHIFT(Key_8))) /* U+252c, XKB_KEY_topt, BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */ \ + OP(L'┴', RALT(LSHIFT(Key_9))) /* U+2534, XKB_KEY_bott, BOX DRAWINGS LIGHT UP AND HORIZONTAL */ \ + OP(L'┼', RALT(Key_Equals)) /* U+253c, XKB_KEY_crossinglines, BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gbreve, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acircumflex, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_bott, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_crossinglines, RALT(Key_Equals)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gbreve, RALT(Key_G)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_horizlinescan5, RALT(Key_Minus)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_leftt, RALT(Key_8)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lowleftcorner, RALT(Key_7)) \ + OP(XKB_KEY_lowrightcorner, RALT(Key_0)) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_rightt, RALT(Key_9)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_topt, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_upleftcorner, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_uprightcorner, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_vertbar, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace tr { +namespace alt { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace alt +} // namespace tr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/tr/crh/keymap.h b/src/kaleidoscope/host_keymap/linux/tr/crh/keymap.h new file mode 100644 index 0000000000..a22bdd39c7 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/tr/crh/keymap.h @@ -0,0 +1,562 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: tr +// variant: crh + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_Backtick) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_2)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_NonUsPound) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_NonUsPound)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_1)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', RALT(LSHIFT(Key_Minus))) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_Minus)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', LSHIFT(Key_Backtick)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_Quote) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_Minus) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_Backtick) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_2)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_NonUsPound) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_NonUsPound)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_1)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', RALT(LSHIFT(Key_Minus))) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_Minus)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', LSHIFT(Key_Backtick)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_Quote) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_Minus) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_2)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_S)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Semicolon)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'Â', RALT(LSHIFT(Key_A))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ç', LSHIFT(Key_Period)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Í', RALT(LSHIFT(Key_F))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ñ', LSHIFT(Key_X)) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ô', RALT(LSHIFT(Key_O))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', LSHIFT(Key_Comma)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Û', RALT(LSHIFT(Key_U))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', LSHIFT(Key_RightBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'â', RALT(Key_A)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ç', Key_Period) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'í', RALT(Key_F)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ñ', Key_X) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ô', RALT(Key_O)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', Key_Comma) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'û', RALT(Key_U)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', Key_RightBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Ğ', LSHIFT(Key_LeftBracket)) /* U+011e, XKB_KEY_Gbreve, LATIN CAPITAL LETTER G WITH BREVE */ \ + OP(L'ğ', Key_LeftBracket) /* U+011f, XKB_KEY_gbreve, LATIN SMALL LETTER G WITH BREVE */ \ + OP(L'Ĭ', RALT(LSHIFT(Key_J))) /* U+012c, XKB_KEY_Ibreve, LATIN CAPITAL LETTER I WITH BREVE */ \ + OP(L'ĭ', RALT(Key_J)) /* U+012d, XKB_KEY_ibreve, LATIN SMALL LETTER I WITH BREVE */ \ + OP(L'İ', LSHIFT(Key_Quote)) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'ı', Key_I) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ş', LSHIFT(Key_Semicolon)) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', Key_Semicolon) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'₺', RALT(Key_T)) \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gbreve, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Ibreve, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, LSHIFT(Key_X)) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acircumflex, RALT(Key_A)) \ + OP(XKB_KEY_acute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_2)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, RALT(Key_Minus)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_bar, RALT(Key_Equals)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_Period) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_comma, Key_NonUsPound) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Slash)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gbreve, Key_LeftBracket) \ + OP(XKB_KEY_grave, RALT(Key_NonUsPound)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_1)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_Quote) \ + OP(XKB_KEY_iacute, RALT(Key_F)) \ + OP(XKB_KEY_ibreve, RALT(Key_J)) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_idotless, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(Key_Comma)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_ntilde, Key_X) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, RALT(Key_O)) \ + OP(XKB_KEY_odiaeresis, Key_Comma) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_4)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, Key_Backtick) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, Key_Semicolon) \ + OP(XKB_KEY_section, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_2)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, RALT(Key_U)) \ + OP(XKB_KEY_udiaeresis, Key_RightBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_Minus) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace tr { +namespace crh { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace crh +} // namespace tr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/tr/crh_alt/keymap.h b/src/kaleidoscope/host_keymap/linux/tr/crh_alt/keymap.h new file mode 100644 index 0000000000..fb6114a109 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/tr/crh_alt/keymap.h @@ -0,0 +1,596 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: tr +// variant: crh_alt + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'Â', RALT(LSHIFT(Key_A))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Í', RALT(LSHIFT(Key_F))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ö', RALT(LSHIFT(Key_O))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ü', RALT(LSHIFT(Key_U))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'â', RALT(Key_A)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'í', RALT(Key_F)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ö', RALT(Key_O)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ü', RALT(Key_U)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ğ', RALT(LSHIFT(Key_G))) /* U+011e, XKB_KEY_Gbreve, LATIN CAPITAL LETTER G WITH BREVE */ \ + OP(L'ğ', RALT(Key_G)) /* U+011f, XKB_KEY_gbreve, LATIN SMALL LETTER G WITH BREVE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Ĭ', RALT(LSHIFT(Key_J))) /* U+012c, XKB_KEY_Ibreve, LATIN CAPITAL LETTER I WITH BREVE */ \ + OP(L'ĭ', RALT(Key_J)) /* U+012d, XKB_KEY_ibreve, LATIN SMALL LETTER I WITH BREVE */ \ + OP(L'İ', RALT(LSHIFT(Key_I))) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'ı', RALT(Key_I)) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ş', RALT(LSHIFT(Key_S))) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', RALT(Key_S)) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'─', RALT(Key_Minus)) /* U+2500, XKB_KEY_horizlinescan5, BOX DRAWINGS LIGHT HORIZONTAL */ \ + OP(L'│', RALT(LSHIFT(Key_Minus))) /* U+2502, XKB_KEY_vertbar, BOX DRAWINGS LIGHT VERTICAL */ \ + OP(L'┌', RALT(LSHIFT(Key_7))) /* U+250c, XKB_KEY_upleftcorner, BOX DRAWINGS LIGHT DOWN AND RIGHT */ \ + OP(L'┐', RALT(LSHIFT(Key_0))) /* U+2510, XKB_KEY_uprightcorner, BOX DRAWINGS LIGHT DOWN AND LEFT */ \ + OP(L'└', RALT(Key_7)) /* U+2514, XKB_KEY_lowleftcorner, BOX DRAWINGS LIGHT UP AND RIGHT */ \ + OP(L'┘', RALT(Key_0)) /* U+2518, XKB_KEY_lowrightcorner, BOX DRAWINGS LIGHT UP AND LEFT */ \ + OP(L'├', RALT(Key_8)) /* U+251c, XKB_KEY_leftt, BOX DRAWINGS LIGHT VERTICAL AND RIGHT */ \ + OP(L'┤', RALT(Key_9)) /* U+2524, XKB_KEY_rightt, BOX DRAWINGS LIGHT VERTICAL AND LEFT */ \ + OP(L'┬', RALT(LSHIFT(Key_8))) /* U+252c, XKB_KEY_topt, BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */ \ + OP(L'┴', RALT(LSHIFT(Key_9))) /* U+2534, XKB_KEY_bott, BOX DRAWINGS LIGHT UP AND HORIZONTAL */ \ + OP(L'┼', RALT(Key_Equals)) /* U+253c, XKB_KEY_crossinglines, BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gbreve, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Ibreve, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acircumflex, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_bott, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_crossinglines, RALT(Key_Equals)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gbreve, RALT(Key_G)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_horizlinescan5, RALT(Key_Minus)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, RALT(Key_F)) \ + OP(XKB_KEY_ibreve, RALT(Key_J)) \ + OP(XKB_KEY_idotless, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_leftt, RALT(Key_8)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lowleftcorner, RALT(Key_7)) \ + OP(XKB_KEY_lowrightcorner, RALT(Key_0)) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_rightt, RALT(Key_9)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_topt, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_upleftcorner, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_uprightcorner, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_vertbar, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace tr { +namespace crh_alt { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace crh_alt +} // namespace tr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/tr/crh_f/keymap.h b/src/kaleidoscope/host_keymap/linux/tr/crh_f/keymap.h new file mode 100644 index 0000000000..1af028e0f8 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/tr/crh_f/keymap.h @@ -0,0 +1,554 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: tr +// variant: crh_f + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Backtick) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Slash) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', RALT(LSHIFT(Key_Minus))) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_F)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_Comma)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_V)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_Y)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Q)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_O)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_R)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_Z)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_J)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_K)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_I)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_T)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_LeftBracket)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_U)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_M)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_H)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_A)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_C)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_RightBracket)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_Minus)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Semicolon)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_N)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Backtick)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_F) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_Comma) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_V) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_Y) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Q) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_O) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_S) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_Z) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_J) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_K) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_I) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_T) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_LeftBracket) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_U) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_M) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_H) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_A) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_C) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_RightBracket) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_Minus) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Semicolon) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_N) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Backtick) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Slash) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', RALT(LSHIFT(Key_Minus))) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_F)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_Comma)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_V)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_Y)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Q)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_O)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_R)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_Z)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_J)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_K)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_I)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_T)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_LeftBracket)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_U)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_M)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_H)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_A)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_C)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_RightBracket)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_Minus)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Semicolon)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_N)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Backtick)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_F) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_Comma) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_V) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_Y) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Q) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_O) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_S) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_Z) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_J) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_K) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_I) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_T) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_LeftBracket) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_U) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_M) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_H) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_A) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_C) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_RightBracket) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_Minus) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Semicolon) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_N) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Comma))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_V)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_P)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(Key_Y)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_M)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_V))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(Key_U)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_O)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Semicolon)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_K)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'·', RALT(Key_Slash)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'Â', RALT(LSHIFT(Key_F))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ç', LSHIFT(Key_B)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Í', RALT(LSHIFT(Key_R))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Î', RALT(LSHIFT(Key_S))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ñ', LSHIFT(Key_NonUsPound)) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ô', RALT(LSHIFT(Key_T))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', LSHIFT(Key_X)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Û', RALT(LSHIFT(Key_A))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', LSHIFT(Key_G)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'â', RALT(Key_F)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ç', Key_B) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'í', RALT(Key_R)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'î', RALT(Key_S)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ñ', Key_NonUsPound) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ô', RALT(Key_T)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', Key_X) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_Period)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'û', RALT(Key_A)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', Key_G) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Ğ', LSHIFT(Key_E)) /* U+011e, XKB_KEY_Gbreve, LATIN CAPITAL LETTER G WITH BREVE */ \ + OP(L'ğ', Key_E) /* U+011f, XKB_KEY_gbreve, LATIN SMALL LETTER G WITH BREVE */ \ + OP(L'Ĭ', RALT(LSHIFT(Key_J))) /* U+012c, XKB_KEY_Ibreve, LATIN CAPITAL LETTER I WITH BREVE */ \ + OP(L'ĭ', RALT(Key_J)) /* U+012d, XKB_KEY_ibreve, LATIN SMALL LETTER I WITH BREVE */ \ + OP(L'İ', LSHIFT(Key_S)) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'ı', Key_R) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ş', LSHIFT(Key_Quote)) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', Key_Quote) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'“', RALT(Key_C)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_D)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'₺', RALT(Key_H)) \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_V)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_B)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_D)) \ + OP(XKB_KEY_F, LSHIFT(Key_Q)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_W)) \ + OP(XKB_KEY_Gbreve, LSHIFT(Key_E)) \ + OP(XKB_KEY_H, LSHIFT(Key_O)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_R)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, LSHIFT(Key_S)) \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Ibreve, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_Z)) \ + OP(XKB_KEY_K, LSHIFT(Key_J)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_K)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_I)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_T)) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_X)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_R, LSHIFT(Key_U)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_M)) \ + OP(XKB_KEY_Scedilla, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_H)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_A)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_G)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_C)) \ + OP(XKB_KEY_W, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_X, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Z, LSHIFT(Key_N)) \ + OP(XKB_KEY_a, Key_F) \ + OP(XKB_KEY_acircumflex, RALT(Key_F)) \ + OP(XKB_KEY_acute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_7)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_Comma) \ + OP(XKB_KEY_backslash, RALT(Key_Backtick)) \ + OP(XKB_KEY_bar, RALT(Key_Equals)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_V) \ + OP(XKB_KEY_ccedilla, Key_B) \ + OP(XKB_KEY_cent, RALT(Key_V)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Slash) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_d, Key_Y) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_degree, RALT(Key_O)) \ + OP(XKB_KEY_division, RALT(Key_Period)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_Q) \ + OP(XKB_KEY_g, Key_W) \ + OP(XKB_KEY_gbreve, Key_E) \ + OP(XKB_KEY_grave, RALT(Key_NonUsPound)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_O) \ + OP(XKB_KEY_i, Key_S) \ + OP(XKB_KEY_iacute, RALT(Key_R)) \ + OP(XKB_KEY_ibreve, RALT(Key_J)) \ + OP(XKB_KEY_icircumflex, RALT(Key_S)) \ + OP(XKB_KEY_idotless, Key_R) \ + OP(XKB_KEY_j, Key_Z) \ + OP(XKB_KEY_k, Key_J) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_C)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_K) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, RALT(Key_K)) \ + OP(XKB_KEY_multiply, RALT(Key_Comma)) \ + OP(XKB_KEY_n, Key_I) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_ntilde, Key_NonUsPound) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_T) \ + OP(XKB_KEY_ocircumflex, RALT(Key_T)) \ + OP(XKB_KEY_odiaeresis, Key_X) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Slash)) \ + OP(XKB_KEY_plus, Key_Backtick) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_LeftBracket) \ + OP(XKB_KEY_question, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_U) \ + OP(XKB_KEY_registered, RALT(Key_U)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_s, Key_M) \ + OP(XKB_KEY_scedilla, Key_Quote) \ + OP(XKB_KEY_section, RALT(Key_M)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_slash, RALT(Key_Minus)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_P)) \ + OP(XKB_KEY_t, Key_H) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_A) \ + OP(XKB_KEY_ucircumflex, RALT(Key_A)) \ + OP(XKB_KEY_udiaeresis, Key_G) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_v, Key_C) \ + OP(XKB_KEY_w, Key_RightBracket) \ + OP(XKB_KEY_x, Key_Minus) \ + OP(XKB_KEY_y, Key_Semicolon) \ + OP(XKB_KEY_yen, RALT(Key_Y)) \ + OP(XKB_KEY_z, Key_N) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace tr { +namespace crh_f { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace crh_f +} // namespace tr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/tr/f/keymap.h b/src/kaleidoscope/host_keymap/linux/tr/f/keymap.h new file mode 100644 index 0000000000..4d178920a4 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/tr/f/keymap.h @@ -0,0 +1,548 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: tr +// variant: f + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Backtick) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Slash) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Minus) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_F)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_Comma)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_V)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_Y)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Q)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_O)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_R)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_Z)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_J)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_K)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_I)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_T)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_LeftBracket)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_U)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_M)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_H)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_A)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_C)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_RightBracket)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_NonUsPound)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Semicolon)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_N)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_F) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_Comma) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_V) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_Y) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Q) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_O) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_S) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_Z) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_J) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_K) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_I) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_T) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_LeftBracket) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_U) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_M) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_H) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_A) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_C) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_RightBracket) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_NonUsPound) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Semicolon) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_N) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Backtick) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Slash) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Minus) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_F)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_Comma)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_V)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_Y)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Q)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_O)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_R)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_Z)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_J)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_K)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_I)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_T)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_LeftBracket)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_U)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_M)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_H)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_A)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_C)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_RightBracket)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_NonUsPound)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Semicolon)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_N)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_F) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_Comma) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_V) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_Y) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Q) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_O) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_S) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_Z) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_J) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_K) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_I) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_T) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_LeftBracket) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_U) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_M) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_H) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_A) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_C) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_RightBracket) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_NonUsPound) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Semicolon) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_N) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Comma))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_V)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_P)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(Key_Y)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_M)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_V))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_U)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_O)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Semicolon)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_K)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Slash)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Â', RALT(LSHIFT(Key_F))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ç', LSHIFT(Key_B)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Î', RALT(LSHIFT(Key_S))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ô', RALT(LSHIFT(Key_T))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', LSHIFT(Key_X)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Û', RALT(LSHIFT(Key_A))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', LSHIFT(Key_G)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'â', RALT(Key_F)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ç', Key_B) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'î', RALT(Key_S)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ô', RALT(Key_T)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', Key_X) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_Period)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'û', RALT(Key_A)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', Key_G) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Ğ', LSHIFT(Key_E)) /* U+011e, XKB_KEY_Gbreve, LATIN CAPITAL LETTER G WITH BREVE */ \ + OP(L'ğ', Key_E) /* U+011f, XKB_KEY_gbreve, LATIN SMALL LETTER G WITH BREVE */ \ + OP(L'İ', LSHIFT(Key_S)) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'ı', Key_R) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ş', LSHIFT(Key_Quote)) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', Key_Quote) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'“', RALT(Key_C)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_D)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'₺', RALT(Key_H)) \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_V)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_B)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_D)) \ + OP(XKB_KEY_F, LSHIFT(Key_Q)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_W)) \ + OP(XKB_KEY_Gbreve, LSHIFT(Key_E)) \ + OP(XKB_KEY_H, LSHIFT(Key_O)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_R)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, LSHIFT(Key_S)) \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_Z)) \ + OP(XKB_KEY_K, LSHIFT(Key_J)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_K)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_I)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_T)) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_X)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_R, LSHIFT(Key_U)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_M)) \ + OP(XKB_KEY_Scedilla, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_H)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_A)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_G)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_C)) \ + OP(XKB_KEY_W, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_X, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Z, LSHIFT(Key_N)) \ + OP(XKB_KEY_a, Key_F) \ + OP(XKB_KEY_acircumflex, RALT(Key_F)) \ + OP(XKB_KEY_acute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_7)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_Comma) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_Equals)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_V) \ + OP(XKB_KEY_ccedilla, Key_B) \ + OP(XKB_KEY_cent, RALT(Key_V)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Slash) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_d, Key_Y) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_degree, RALT(Key_O)) \ + OP(XKB_KEY_division, RALT(Key_Period)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_Q) \ + OP(XKB_KEY_g, Key_W) \ + OP(XKB_KEY_gbreve, Key_E) \ + OP(XKB_KEY_grave, RALT(Key_NonUsPound)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_O) \ + OP(XKB_KEY_i, Key_S) \ + OP(XKB_KEY_icircumflex, RALT(Key_S)) \ + OP(XKB_KEY_idotless, Key_R) \ + OP(XKB_KEY_j, Key_Z) \ + OP(XKB_KEY_k, Key_J) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_C)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_K) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, RALT(Key_K)) \ + OP(XKB_KEY_multiply, RALT(Key_Comma)) \ + OP(XKB_KEY_n, Key_I) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_T) \ + OP(XKB_KEY_ocircumflex, RALT(Key_T)) \ + OP(XKB_KEY_odiaeresis, Key_X) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Slash)) \ + OP(XKB_KEY_plus, Key_Backtick) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_LeftBracket) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_U) \ + OP(XKB_KEY_registered, RALT(Key_U)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_s, Key_M) \ + OP(XKB_KEY_scedilla, Key_Quote) \ + OP(XKB_KEY_section, RALT(Key_M)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_slash, Key_Minus) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_P)) \ + OP(XKB_KEY_t, Key_H) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_A) \ + OP(XKB_KEY_ucircumflex, RALT(Key_A)) \ + OP(XKB_KEY_udiaeresis, Key_G) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_v, Key_C) \ + OP(XKB_KEY_w, Key_RightBracket) \ + OP(XKB_KEY_x, Key_NonUsPound) \ + OP(XKB_KEY_y, Key_Semicolon) \ + OP(XKB_KEY_yen, RALT(Key_Y)) \ + OP(XKB_KEY_z, Key_N) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace tr { +namespace f { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace f +} // namespace tr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/tr/intl/keymap.h b/src/kaleidoscope/host_keymap/linux/tr/intl/keymap.h new file mode 100644 index 0000000000..3a8b5506df --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/tr/intl/keymap.h @@ -0,0 +1,553 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: tr +// variant: intl + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_Backtick) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_2)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_Minus) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_NonUsPound) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_NonUsPound)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_Quote) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_Backtick) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_2)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_Minus) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_NonUsPound) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_NonUsPound)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_Quote) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_2)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_S)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_F)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(Key_Backtick)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Â', RALT(LSHIFT(Key_A))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ç', LSHIFT(Key_Period)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ô', RALT(LSHIFT(Key_O))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', LSHIFT(Key_Comma)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Û', RALT(LSHIFT(Key_U))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', LSHIFT(Key_RightBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'â', RALT(Key_A)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ç', Key_Period) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', LSHIFT(Key_Backtick)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ô', RALT(Key_O)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', Key_Comma) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_Equals)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'û', RALT(Key_U)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', Key_RightBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Ğ', LSHIFT(Key_LeftBracket)) /* U+011e, XKB_KEY_Gbreve, LATIN CAPITAL LETTER G WITH BREVE */ \ + OP(L'ğ', Key_LeftBracket) /* U+011f, XKB_KEY_gbreve, LATIN SMALL LETTER G WITH BREVE */ \ + OP(L'İ', LSHIFT(Key_Quote)) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'ı', Key_I) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ş', LSHIFT(Key_Semicolon)) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', Key_Semicolon) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'₺', RALT(Key_T)) \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gbreve, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acircumflex, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_2)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, Key_Minus) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_Period) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_comma, Key_NonUsPound) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Slash)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_3)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(Key_Equals)) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gbreve, Key_LeftBracket) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_Quote) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_idotless, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(Key_Comma)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, RALT(Key_O)) \ + OP(XKB_KEY_odiaeresis, Key_Comma) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(Key_F)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_4)) \ + OP(XKB_KEY_plusminus, RALT(Key_Backtick)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, Key_Backtick) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, Key_Semicolon) \ + OP(XKB_KEY_section, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_2)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, RALT(Key_U)) \ + OP(XKB_KEY_udiaeresis, Key_RightBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace tr { +namespace intl { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace intl +} // namespace tr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/tr/ku/keymap.h b/src/kaleidoscope/host_keymap/linux/tr/ku/keymap.h new file mode 100644 index 0000000000..b82db45339 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/tr/ku/keymap.h @@ -0,0 +1,552 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: tr +// variant: ku + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_Backtick) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_2)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_Minus) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_NonUsPound) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_NonUsPound)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_1)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_LeftBracket)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_LeftBracket) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_Backtick) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_2)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_Minus) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_NonUsPound) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_NonUsPound)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_1)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_LeftBracket)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_LeftBracket) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_2)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_S)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_F)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Semicolon)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Â', RALT(LSHIFT(Key_A))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ç', LSHIFT(Key_Period)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ê', LSHIFT(Key_Comma)) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Î', LSHIFT(Key_Quote)) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ô', RALT(LSHIFT(Key_O))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', RALT(LSHIFT(Key_Comma))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'Û', LSHIFT(Key_RightBracket)) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'â', RALT(Key_A)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ç', Key_Period) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', LSHIFT(Key_Backtick)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ê', Key_Comma) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'î', Key_Quote) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ô', RALT(Key_O)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', RALT(Key_Comma)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'û', Key_RightBracket) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ğ', RALT(LSHIFT(Key_LeftBracket))) /* U+011e, XKB_KEY_Gbreve, LATIN CAPITAL LETTER G WITH BREVE */ \ + OP(L'ğ', RALT(Key_LeftBracket)) /* U+011f, XKB_KEY_gbreve, LATIN SMALL LETTER G WITH BREVE */ \ + OP(L'ı', RALT(Key_I)) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ş', LSHIFT(Key_Semicolon)) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', Key_Semicolon) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'₺', RALT(Key_T)) \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Ecircumflex, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gbreve, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acircumflex, RALT(Key_A)) \ + OP(XKB_KEY_acute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_2)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, Key_Minus) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_Equals)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_Period) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_comma, Key_NonUsPound) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Slash)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_ecircumflex, Key_Comma) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gbreve, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_grave, RALT(Key_NonUsPound)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_1)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, Key_Quote) \ + OP(XKB_KEY_idotless, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, RALT(Key_O)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_Comma)) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_F)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_4)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, Key_Backtick) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, Key_Semicolon) \ + OP(XKB_KEY_section, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_2)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, Key_RightBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_LeftBracket) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace tr { +namespace ku { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ku +} // namespace tr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/tr/ku_alt/keymap.h b/src/kaleidoscope/host_keymap/linux/tr/ku_alt/keymap.h new file mode 100644 index 0000000000..b05f139298 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/tr/ku_alt/keymap.h @@ -0,0 +1,592 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: tr +// variant: ku_alt + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(LSHIFT(Key_3))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'Â', RALT(LSHIFT(Key_A))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ê', RALT(LSHIFT(Key_E))) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ö', RALT(LSHIFT(Key_O))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Û', RALT(LSHIFT(Key_U))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Þ', RALT(LSHIFT(Key_P))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'â', RALT(Key_A)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ê', RALT(Key_E)) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ö', RALT(Key_O)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'û', RALT(Key_U)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'þ', RALT(Key_P)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ğ', RALT(LSHIFT(Key_G))) /* U+011e, XKB_KEY_Gbreve, LATIN CAPITAL LETTER G WITH BREVE */ \ + OP(L'ğ', RALT(Key_G)) /* U+011f, XKB_KEY_gbreve, LATIN SMALL LETTER G WITH BREVE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ş', RALT(LSHIFT(Key_S))) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', RALT(Key_S)) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ŧ', RALT(LSHIFT(Key_T))) /* U+0166, XKB_KEY_Tslash, LATIN CAPITAL LETTER T WITH STROKE */ \ + OP(L'ŧ', RALT(Key_T)) /* U+0167, XKB_KEY_tslash, LATIN SMALL LETTER T WITH STROKE */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + OP(L'─', RALT(Key_Minus)) /* U+2500, XKB_KEY_horizlinescan5, BOX DRAWINGS LIGHT HORIZONTAL */ \ + OP(L'│', RALT(LSHIFT(Key_Minus))) /* U+2502, XKB_KEY_vertbar, BOX DRAWINGS LIGHT VERTICAL */ \ + OP(L'┌', RALT(LSHIFT(Key_7))) /* U+250c, XKB_KEY_upleftcorner, BOX DRAWINGS LIGHT DOWN AND RIGHT */ \ + OP(L'┐', RALT(LSHIFT(Key_0))) /* U+2510, XKB_KEY_uprightcorner, BOX DRAWINGS LIGHT DOWN AND LEFT */ \ + OP(L'└', RALT(Key_7)) /* U+2514, XKB_KEY_lowleftcorner, BOX DRAWINGS LIGHT UP AND RIGHT */ \ + OP(L'┘', RALT(Key_0)) /* U+2518, XKB_KEY_lowrightcorner, BOX DRAWINGS LIGHT UP AND LEFT */ \ + OP(L'├', RALT(Key_8)) /* U+251c, XKB_KEY_leftt, BOX DRAWINGS LIGHT VERTICAL AND RIGHT */ \ + OP(L'┤', RALT(Key_9)) /* U+2524, XKB_KEY_rightt, BOX DRAWINGS LIGHT VERTICAL AND LEFT */ \ + OP(L'┬', RALT(LSHIFT(Key_8))) /* U+252c, XKB_KEY_topt, BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */ \ + OP(L'┴', RALT(LSHIFT(Key_9))) /* U+2534, XKB_KEY_bott, BOX DRAWINGS LIGHT UP AND HORIZONTAL */ \ + OP(L'┼', RALT(Key_Equals)) /* U+253c, XKB_KEY_crossinglines, BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Ecircumflex, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gbreve, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_P))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tslash, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acircumflex, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_bott, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_crossinglines, RALT(Key_Equals)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Semicolon)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_Quote)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_NonUsPound)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_ecircumflex, RALT(Key_E)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gbreve, RALT(Key_G)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_horizlinescan5, RALT(Key_Minus)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_leftt, RALT(Key_8)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lowleftcorner, RALT(Key_7)) \ + OP(XKB_KEY_lowrightcorner, RALT(Key_0)) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_rightt, RALT(Key_9)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_P)) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_topt, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_tslash, RALT(Key_T)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_upleftcorner, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_uprightcorner, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_vertbar, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace tr { +namespace ku_alt { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ku_alt +} // namespace tr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/tr/ku_f/keymap.h b/src/kaleidoscope/host_keymap/linux/tr/ku_f/keymap.h new file mode 100644 index 0000000000..b2f26b94d4 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/tr/ku_f/keymap.h @@ -0,0 +1,548 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: tr +// variant: ku_f + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_Backtick) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_Slash) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Minus) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_F)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_Comma)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_V)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_Y)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Q)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_O)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_R)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_Z)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_J)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_K)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_I)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_T)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_LeftBracket)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_U)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_M)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_H)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_C)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_RightBracket)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_E)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Semicolon)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_N)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_F) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_Comma) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_V) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_Y) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Q) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_O) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_R) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_Z) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_J) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_K) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_I) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_T) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_LeftBracket) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_U) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_M) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_H) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_C) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_RightBracket) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_E) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Semicolon) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_N) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_7)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_Backtick) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_Slash) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Minus) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Period)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_Slash)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_F)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_Comma)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_V)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_Y)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Q)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_O)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_R)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_Z)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_J)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_K)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_I)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_T)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_LeftBracket)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_U)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_M)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_H)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_G)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_C)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_RightBracket)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_E)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Semicolon)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_N)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_F) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_Comma) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_V) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_Y) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Q) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_O) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_R) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_Z) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_J) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_K) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_I) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_T) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_LeftBracket) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_U) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_M) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_H) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_G) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_C) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_RightBracket) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_E) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Semicolon) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_N) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Comma))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_V)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_P)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(Key_Y)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_M)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_V))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_Backtick)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_U)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_O)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Semicolon)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_K)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Slash)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'¼', RALT(Key_4)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Â', RALT(LSHIFT(Key_F))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ç', LSHIFT(Key_B)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ê', LSHIFT(Key_X)) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Î', LSHIFT(Key_S)) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ô', RALT(LSHIFT(Key_T))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', RALT(LSHIFT(Key_X))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Û', LSHIFT(Key_A)) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', RALT(LSHIFT(Key_A))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'â', RALT(Key_F)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ç', Key_B) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ê', Key_X) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'î', Key_S) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ô', RALT(Key_T)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', RALT(Key_X)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(Key_Period)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'û', Key_A) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', RALT(Key_A)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Ğ', RALT(LSHIFT(Key_E))) /* U+011e, XKB_KEY_Gbreve, LATIN CAPITAL LETTER G WITH BREVE */ \ + OP(L'ğ', RALT(Key_E)) /* U+011f, XKB_KEY_gbreve, LATIN SMALL LETTER G WITH BREVE */ \ + OP(L'İ', RALT(LSHIFT(Key_S))) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'Ş', LSHIFT(Key_Quote)) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', Key_Quote) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'“', RALT(Key_C)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_D)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'₺', RALT(Key_H)) \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_V)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_B)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_Ecircumflex, LSHIFT(Key_X)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_D)) \ + OP(XKB_KEY_F, LSHIFT(Key_Q)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_W)) \ + OP(XKB_KEY_Gbreve, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_H, LSHIFT(Key_O)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_R)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Icircumflex, LSHIFT(Key_S)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_Z)) \ + OP(XKB_KEY_K, LSHIFT(Key_J)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_K)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_I)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_T)) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_R, LSHIFT(Key_U)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_M)) \ + OP(XKB_KEY_Scedilla, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_H)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_G)) \ + OP(XKB_KEY_Ucircumflex, LSHIFT(Key_A)) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_C)) \ + OP(XKB_KEY_W, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_X, LSHIFT(Key_E)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Z, LSHIFT(Key_N)) \ + OP(XKB_KEY_a, Key_F) \ + OP(XKB_KEY_acircumflex, RALT(Key_F)) \ + OP(XKB_KEY_acute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_7)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_Comma) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_Equals)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_V) \ + OP(XKB_KEY_ccedilla, Key_B) \ + OP(XKB_KEY_cent, RALT(Key_V)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Period)) \ + OP(XKB_KEY_comma, Key_Slash) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_d, Key_Y) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_degree, RALT(Key_O)) \ + OP(XKB_KEY_division, RALT(Key_Period)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_ecircumflex, Key_X) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_Q) \ + OP(XKB_KEY_g, Key_W) \ + OP(XKB_KEY_gbreve, RALT(Key_E)) \ + OP(XKB_KEY_grave, RALT(Key_NonUsPound)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_h, Key_O) \ + OP(XKB_KEY_i, Key_R) \ + OP(XKB_KEY_icircumflex, Key_S) \ + OP(XKB_KEY_j, Key_Z) \ + OP(XKB_KEY_k, Key_J) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_C)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_K) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, RALT(Key_K)) \ + OP(XKB_KEY_multiply, RALT(Key_Comma)) \ + OP(XKB_KEY_n, Key_I) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_notsign, RALT(Key_Backtick)) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_T) \ + OP(XKB_KEY_ocircumflex, RALT(Key_T)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_X)) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(Key_4)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(Key_Slash)) \ + OP(XKB_KEY_plus, Key_Backtick) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_LeftBracket) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_r, Key_U) \ + OP(XKB_KEY_registered, RALT(Key_U)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_s, Key_M) \ + OP(XKB_KEY_scedilla, Key_Quote) \ + OP(XKB_KEY_section, RALT(Key_M)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_slash, Key_Minus) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_P)) \ + OP(XKB_KEY_t, Key_H) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_G) \ + OP(XKB_KEY_ucircumflex, Key_A) \ + OP(XKB_KEY_udiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_v, Key_C) \ + OP(XKB_KEY_w, Key_RightBracket) \ + OP(XKB_KEY_x, Key_E) \ + OP(XKB_KEY_y, Key_Semicolon) \ + OP(XKB_KEY_yen, RALT(Key_Y)) \ + OP(XKB_KEY_z, Key_N) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace tr { +namespace ku_f { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ku_f +} // namespace tr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/tr/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/tr/standard/keymap.h new file mode 100644 index 0000000000..c227df52de --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/tr/standard/keymap.h @@ -0,0 +1,558 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: tr +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_Backtick) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_2)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_Minus) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_NonUsPound) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_NonUsPound)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_1)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_Quote) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_Backtick) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_2)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_Minus) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_NonUsPound) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_NonUsPound)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_1)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_Quote) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_2)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_S)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_F)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Semicolon)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Â', RALT(LSHIFT(Key_A))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ç', LSHIFT(Key_Period)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ô', RALT(LSHIFT(Key_O))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', LSHIFT(Key_Comma)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Û', RALT(LSHIFT(Key_U))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', LSHIFT(Key_RightBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'â', RALT(Key_A)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ç', Key_Period) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', LSHIFT(Key_Backtick)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ô', RALT(Key_O)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', Key_Comma) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'û', RALT(Key_U)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', Key_RightBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Ğ', LSHIFT(Key_LeftBracket)) /* U+011e, XKB_KEY_Gbreve, LATIN CAPITAL LETTER G WITH BREVE */ \ + OP(L'ğ', Key_LeftBracket) /* U+011f, XKB_KEY_gbreve, LATIN SMALL LETTER G WITH BREVE */ \ + OP(L'İ', LSHIFT(Key_Quote)) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'ı', Key_I) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ş', LSHIFT(Key_Semicolon)) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', Key_Semicolon) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'₺', RALT(Key_T)) \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gbreve, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acircumflex, RALT(Key_A)) \ + OP(XKB_KEY_acute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_2)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, Key_Minus) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_Equals)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_Period) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_comma, Key_NonUsPound) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Slash)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gbreve, Key_LeftBracket) \ + OP(XKB_KEY_grave, RALT(Key_NonUsPound)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_1)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_Quote) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_idotless, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(Key_Comma)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, RALT(Key_O)) \ + OP(XKB_KEY_odiaeresis, Key_Comma) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_F)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_4)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, Key_Backtick) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, Key_Semicolon) \ + OP(XKB_KEY_section, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_2)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, RALT(Key_U)) \ + OP(XKB_KEY_udiaeresis, Key_RightBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace tr { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace tr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/tr/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/tr/sun_type6/keymap.h new file mode 100644 index 0000000000..540967b030 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/tr/sun_type6/keymap.h @@ -0,0 +1,470 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: tr +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_Backtick) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_2)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_Minus) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_NonUsPound) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_NonUsPound)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_Quote) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_Backtick) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_2)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_Minus) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_NonUsPound) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_NonUsPound)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_Quote) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'´', RALT(Key_Semicolon)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'Ç', LSHIFT(Key_Period)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ö', LSHIFT(Key_Comma)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'Ü', LSHIFT(Key_RightBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'ç', Key_Period) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', LSHIFT(Key_Backtick)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ö', Key_Comma) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ü', Key_RightBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Ğ', LSHIFT(Key_LeftBracket)) /* U+011e, XKB_KEY_Gbreve, LATIN CAPITAL LETTER G WITH BREVE */ \ + OP(L'ğ', Key_LeftBracket) /* U+011f, XKB_KEY_gbreve, LATIN SMALL LETTER G WITH BREVE */ \ + OP(L'İ', LSHIFT(Key_Quote)) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'ı', Key_I) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ş', LSHIFT(Key_Semicolon)) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', Key_Semicolon) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gbreve, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_2)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, Key_Minus) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_Period) \ + OP(XKB_KEY_colon, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_comma, Key_NonUsPound) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gbreve, Key_LeftBracket) \ + OP(XKB_KEY_grave, RALT(Key_NonUsPound)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_Quote) \ + OP(XKB_KEY_idotless, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_odiaeresis, Key_Comma) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, LSHIFT(Key_4)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_quotedbl, Key_Backtick) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, Key_Semicolon) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_udiaeresis, Key_RightBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace tr { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace tr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/tr/sundeadkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/tr/sundeadkeys/keymap.h new file mode 100644 index 0000000000..943e9374cf --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/tr/sundeadkeys/keymap.h @@ -0,0 +1,558 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: tr +// variant: sundeadkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_Backtick) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', LSHIFT(Key_2)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_Minus) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_NonUsPound) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_NonUsPound)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_1)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_Quote) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_Backtick) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', RALT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_6)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', LSHIFT(Key_2)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_8)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_9)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_Minus) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_NonUsPound) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Equals) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Slash)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_NonUsPound)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', LSHIFT(Key_0)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_1)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Minus)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', RALT(Key_Q)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', RALT(Key_8)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_Minus)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_9)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_3)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Equals)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_NonUsPound)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_Quote) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_Equals)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(Key_RightBracket)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_2)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_Y))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_S)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_F)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(LSHIFT(Key_R))) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'´', RALT(Key_Semicolon)) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_R)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(Key_Period)) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(LSHIFT(Key_M))) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_4))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_5)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_6)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Â', RALT(LSHIFT(Key_A))) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ç', LSHIFT(Key_Period)) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Î', RALT(LSHIFT(Key_I))) /* U+00ce, XKB_KEY_Icircumflex, LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ \ + OP(L'Ô', RALT(LSHIFT(Key_O))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', LSHIFT(Key_Comma)) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Comma)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Û', RALT(LSHIFT(Key_U))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', LSHIFT(Key_RightBracket)) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'â', RALT(Key_A)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ç', Key_Period) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', LSHIFT(Key_Backtick)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'î', RALT(Key_I)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ô', RALT(Key_O)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', Key_Comma) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'û', RALT(Key_U)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', Key_RightBracket) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'Ğ', LSHIFT(Key_LeftBracket)) /* U+011e, XKB_KEY_Gbreve, LATIN CAPITAL LETTER G WITH BREVE */ \ + OP(L'ğ', Key_LeftBracket) /* U+011f, XKB_KEY_gbreve, LATIN SMALL LETTER G WITH BREVE */ \ + OP(L'İ', LSHIFT(Key_Quote)) /* U+0130, XKB_KEY_Iabovedot, LATIN CAPITAL LETTER I WITH DOT ABOVE */ \ + OP(L'ı', Key_I) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Ş', LSHIFT(Key_Semicolon)) /* U+015e, XKB_KEY_Scedilla, LATIN CAPITAL LETTER S WITH CEDILLA */ \ + OP(L'ş', Key_Semicolon) /* U+015f, XKB_KEY_scedilla, LATIN SMALL LETTER S WITH CEDILLA */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'₺', RALT(Key_T)) \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'←', RALT(Key_Y)) /* U+2190, XKB_KEY_leftarrow, LEFTWARDS ARROW */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Acircumflex, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Gbreve, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iabovedot, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Icircumflex, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Odiaeresis, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scedilla, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Udiaeresis, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acircumflex, RALT(Key_A)) \ + OP(XKB_KEY_acute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_6)) \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_2)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_3)) \ + OP(XKB_KEY_asciitilde, RALT(Key_RightBracket)) \ + OP(XKB_KEY_asterisk, Key_Minus) \ + OP(XKB_KEY_at, RALT(Key_Q)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, RALT(Key_Minus)) \ + OP(XKB_KEY_bar, RALT(Key_Equals)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, RALT(Key_8)) \ + OP(XKB_KEY_bracketright, RALT(Key_9)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, Key_Period) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_comma, Key_NonUsPound) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Slash)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_grave, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_equal, LSHIFT(Key_0)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_gbreve, Key_LeftBracket) \ + OP(XKB_KEY_grave, RALT(Key_NonUsPound)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, RALT(Key_1)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_Quote) \ + OP(XKB_KEY_icircumflex, RALT(Key_I)) \ + OP(XKB_KEY_idotless, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftarrow, RALT(Key_Y)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_minus, Key_Equals) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(Key_Comma)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, RALT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, RALT(Key_O)) \ + OP(XKB_KEY_odiaeresis, Key_Comma) \ + OP(XKB_KEY_onehalf, RALT(Key_5)) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_F)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_R)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_8)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_periodcentered, RALT(Key_Period)) \ + OP(XKB_KEY_plus, LSHIFT(Key_4)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, Key_Backtick) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scedilla, Key_Semicolon) \ + OP(XKB_KEY_section, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_slash, LSHIFT(Key_7)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_2)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_threequarters, RALT(Key_6)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, RALT(Key_U)) \ + OP(XKB_KEY_udiaeresis, Key_RightBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace tr { +namespace sundeadkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sundeadkeys +} // namespace tr +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/tw/indigenous/keymap.h b/src/kaleidoscope/host_keymap/linux/tw/indigenous/keymap.h new file mode 100644 index 0000000000..1bcf08413a --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/tw/indigenous/keymap.h @@ -0,0 +1,533 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: tw +// variant: indigenous + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_5))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_4))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(Key_4)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsPound))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'«', RALT(LSHIFT(Key_Comma))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_NonUsPound)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_Q))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Minus))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_Q)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'»', RALT(LSHIFT(Key_Period))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_Slash)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'É', RALT(LSHIFT(Key_E))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(Key_Equals)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', RALT(Key_E)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'÷', RALT(LSHIFT(Key_Equals))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ɨ', RALT(LSHIFT(Key_I))) \ + OP(L'Ʉ', RALT(LSHIFT(Key_U))) \ + OP(L'ɨ', RALT(Key_I)) \ + OP(L'ʉ', RALT(Key_U)) \ + OP(L'ʼ', Key_Quote) \ + OP(L'ː', RALT(Key_Semicolon)) \ + OP(L'̍', RALT(Key_1)) \ + OP(L'͘', RALT(Key_2)) \ + OP(L'Ḏ', RALT(LSHIFT(Key_D))) \ + OP(L'ḏ', RALT(Key_D)) \ + OP(L'Ḻ', RALT(LSHIFT(Key_L))) \ + OP(L'ḻ', RALT(Key_L)) \ + OP(L'Ṟ', RALT(LSHIFT(Key_R))) \ + OP(L'ṟ', RALT(Key_R)) \ + OP(L'Ṯ', RALT(LSHIFT(Key_T))) \ + OP(L'ṯ', RALT(Key_T)) \ + OP(L'Ṳ', RALT(LSHIFT(Key_Y))) \ + OP(L'ṳ', RALT(Key_Y)) \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_0)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_7)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowcomma, RALT(Key_Comma)) /* XKB_KEY_dead_belowcomma */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Period)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_9))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_6))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_8)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_Backtick)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Minus)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_9)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, RALT(Key_E)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(Key_Equals)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_Q)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_3)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_4)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace tw { +namespace indigenous { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace indigenous +} // namespace tw +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/tw/saisiyat/keymap.h b/src/kaleidoscope/host_keymap/linux/tw/saisiyat/keymap.h new file mode 100644 index 0000000000..1088d2ee5d --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/tw/saisiyat/keymap.h @@ -0,0 +1,533 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: tw +// variant: saisiyat + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_5))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_4))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(Key_4)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsPound))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'«', RALT(LSHIFT(Key_Comma))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_NonUsPound)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_Q))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Minus))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_Q)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'»', RALT(LSHIFT(Key_Period))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_Slash)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'É', RALT(LSHIFT(Key_E))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(Key_Equals)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', RALT(Key_E)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'÷', RALT(LSHIFT(Key_Equals))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ɨ', RALT(LSHIFT(Key_I))) \ + OP(L'Ʉ', RALT(LSHIFT(Key_U))) \ + OP(L'ɨ', RALT(Key_I)) \ + OP(L'ʉ', RALT(Key_U)) \ + OP(L'ʼ', Key_Quote) \ + OP(L'ː', Key_Semicolon) \ + OP(L'̍', RALT(Key_1)) \ + OP(L'͘', RALT(Key_2)) \ + OP(L'Ḏ', RALT(LSHIFT(Key_D))) \ + OP(L'ḏ', RALT(Key_D)) \ + OP(L'Ḻ', RALT(LSHIFT(Key_L))) \ + OP(L'ḻ', RALT(Key_L)) \ + OP(L'Ṟ', RALT(LSHIFT(Key_R))) \ + OP(L'ṟ', RALT(Key_R)) \ + OP(L'Ṯ', RALT(LSHIFT(Key_T))) \ + OP(L'ṯ', RALT(Key_T)) \ + OP(L'Ṳ', RALT(LSHIFT(Key_Y))) \ + OP(L'ṳ', RALT(Key_Y)) \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_0)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_7)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowcomma, RALT(Key_Comma)) /* XKB_KEY_dead_belowcomma */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Period)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_9))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_6))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_8)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_Backtick)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Minus)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_9)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, RALT(Key_E)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(Key_Equals)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_Q)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_3)) \ + OP(XKB_KEY_semicolon, RALT(Key_Semicolon)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_4)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace tw { +namespace saisiyat { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace saisiyat +} // namespace tw +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/tw/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/tw/standard/keymap.h new file mode 100644 index 0000000000..a81e5f5858 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/tw/standard/keymap.h @@ -0,0 +1,533 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: tw +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_5))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_4))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(Key_4)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsPound))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'«', RALT(LSHIFT(Key_Comma))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_NonUsPound)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_Q))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Minus))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_Q)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'»', RALT(LSHIFT(Key_Period))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_Slash)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'É', RALT(LSHIFT(Key_E))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'×', RALT(Key_Equals)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', RALT(Key_E)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'÷', RALT(LSHIFT(Key_Equals))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Ɨ', RALT(LSHIFT(Key_I))) \ + OP(L'Ʉ', RALT(LSHIFT(Key_U))) \ + OP(L'ɨ', RALT(Key_I)) \ + OP(L'ʉ', RALT(Key_U)) \ + OP(L'ʼ', RALT(Key_Quote)) \ + OP(L'ː', RALT(Key_Semicolon)) \ + OP(L'̍', RALT(Key_1)) \ + OP(L'͘', RALT(Key_2)) \ + OP(L'Ḏ', RALT(LSHIFT(Key_D))) \ + OP(L'ḏ', RALT(Key_D)) \ + OP(L'Ḻ', RALT(LSHIFT(Key_L))) \ + OP(L'ḻ', RALT(Key_L)) \ + OP(L'Ṟ', RALT(LSHIFT(Key_R))) \ + OP(L'ṟ', RALT(Key_R)) \ + OP(L'Ṯ', RALT(LSHIFT(Key_T))) \ + OP(L'ṯ', RALT(Key_T)) \ + OP(L'Ṳ', RALT(LSHIFT(Key_Y))) \ + OP(L'ṳ', RALT(Key_Y)) \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_0)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_7)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowcomma, RALT(Key_Comma)) /* XKB_KEY_dead_belowcomma */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Period)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_9))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_6))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_8)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_Backtick)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Minus)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_9)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, RALT(Key_E)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(Key_Equals)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_Q)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_3)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_4)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace tw { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace tw +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/tz/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/tz/standard/keymap.h new file mode 100644 index 0000000000..2633fd8bd7 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/tz/standard/keymap.h @@ -0,0 +1,338 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: tz +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'،', Key_Comma) /* U+060c, XKB_KEY_Arabic_comma, ARABIC COMMA */ \ + OP(L'؛', Key_Semicolon) /* U+061b, XKB_KEY_Arabic_semicolon, ARABIC SEMICOLON */ \ + OP(L'؟', LSHIFT(Key_Slash)) /* U+061f, XKB_KEY_Arabic_question_mark, ARABIC QUESTION MARK */ \ + OP(L'ء', Key_Quote) /* U+0621, XKB_KEY_Arabic_hamza, ARABIC LETTER HAMZA */ \ + OP(L'أ', LSHIFT(Key_Period)) /* U+0623, XKB_KEY_Arabic_hamzaonalef, ARABIC LETTER ALEF WITH HAMZA ABOVE */ \ + OP(L'ؤ', LSHIFT(Key_W)) /* U+0624, XKB_KEY_Arabic_hamzaonwaw, ARABIC LETTER WAW WITH HAMZA ABOVE */ \ + OP(L'إ', LSHIFT(Key_Comma)) /* U+0625, XKB_KEY_Arabic_hamzaunderalef, ARABIC LETTER ALEF WITH HAMZA BELOW */ \ + OP(L'ئ', LSHIFT(Key_I)) /* U+0626, XKB_KEY_Arabic_hamzaonyeh, ARABIC LETTER YEH WITH HAMZA ABOVE */ \ + OP(L'ا', LSHIFT(Key_A)) /* U+0627, XKB_KEY_Arabic_alef, ARABIC LETTER ALEF */ \ + OP(L'ب', Key_B) /* U+0628, XKB_KEY_Arabic_beh, ARABIC LETTER BEH */ \ + OP(L'ة', LSHIFT(Key_P)) /* U+0629, XKB_KEY_Arabic_tehmarbuta, ARABIC LETTER TEH MARBUTA */ \ + OP(L'ت', Key_T) /* U+062a, XKB_KEY_Arabic_teh, ARABIC LETTER TEH */ \ + OP(L'ث', LSHIFT(Key_V)) /* U+062b, XKB_KEY_Arabic_theh, ARABIC LETTER THEH */ \ + OP(L'ج', Key_J) /* U+062c, XKB_KEY_Arabic_jeem, ARABIC LETTER JEEM */ \ + OP(L'ح', LSHIFT(Key_H)) /* U+062d, XKB_KEY_Arabic_hah, ARABIC LETTER HAH */ \ + OP(L'خ', Key_X) /* U+062e, XKB_KEY_Arabic_khah, ARABIC LETTER KHAH */ \ + OP(L'د', Key_D) /* U+062f, XKB_KEY_Arabic_dal, ARABIC LETTER DAL */ \ + OP(L'ذ', LSHIFT(Key_B)) /* U+0630, XKB_KEY_Arabic_thal, ARABIC LETTER THAL */ \ + OP(L'ر', Key_R) /* U+0631, XKB_KEY_Arabic_ra, ARABIC LETTER REH */ \ + OP(L'ز', Key_Z) /* U+0632, XKB_KEY_Arabic_zain, ARABIC LETTER ZAIN */ \ + OP(L'س', Key_S) /* U+0633, XKB_KEY_Arabic_seen, ARABIC LETTER SEEN */ \ + OP(L'ش', LSHIFT(Key_C)) /* U+0634, XKB_KEY_Arabic_sheen, ARABIC LETTER SHEEN */ \ + OP(L'ص', LSHIFT(Key_S)) /* U+0635, XKB_KEY_Arabic_sad, ARABIC LETTER SAD */ \ + OP(L'ض', LSHIFT(Key_D)) /* U+0636, XKB_KEY_Arabic_dad, ARABIC LETTER DAD */ \ + OP(L'ط', LSHIFT(Key_T)) /* U+0637, XKB_KEY_Arabic_tah, ARABIC LETTER TAH */ \ + OP(L'ظ', LSHIFT(Key_Z)) /* U+0638, XKB_KEY_Arabic_zah, ARABIC LETTER ZAH */ \ + OP(L'ع', LSHIFT(Key_E)) /* U+0639, XKB_KEY_Arabic_ain, ARABIC LETTER AIN */ \ + OP(L'غ', LSHIFT(Key_G)) /* U+063a, XKB_KEY_Arabic_ghain, ARABIC LETTER GHAIN */ \ + OP(L'ـ', LSHIFT(Key_Minus)) /* U+0640, XKB_KEY_Arabic_tatweel, ARABIC TATWEEL */ \ + OP(L'ف', Key_F) /* U+0641, XKB_KEY_Arabic_feh, ARABIC LETTER FEH */ \ + OP(L'ق', Key_Q) /* U+0642, XKB_KEY_Arabic_qaf, ARABIC LETTER QAF */ \ + OP(L'ك', Key_K) /* U+0643, XKB_KEY_Arabic_kaf, ARABIC LETTER KAF */ \ + OP(L'ل', Key_L) /* U+0644, XKB_KEY_Arabic_lam, ARABIC LETTER LAM */ \ + OP(L'م', Key_M) /* U+0645, XKB_KEY_Arabic_meem, ARABIC LETTER MEEM */ \ + OP(L'ن', Key_N) /* U+0646, XKB_KEY_Arabic_noon, ARABIC LETTER NOON */ \ + OP(L'ه', Key_H) /* U+0647, XKB_KEY_Arabic_ha, ARABIC LETTER HEH */ \ + OP(L'و', Key_W) /* U+0648, XKB_KEY_Arabic_waw, ARABIC LETTER WAW */ \ + OP(L'ى', LSHIFT(Key_Y)) /* U+0649, XKB_KEY_Arabic_alefmaksura, ARABIC LETTER ALEF MAKSURA */ \ + OP(L'ي', Key_Y) /* U+064a, XKB_KEY_Arabic_yeh, ARABIC LETTER YEH */ \ + OP(L'ً', LSHIFT(Key_F)) /* U+064b, XKB_KEY_Arabic_fathatan, ARABIC FATHATAN */ \ + OP(L'ٌ', LSHIFT(Key_U)) /* U+064c, XKB_KEY_Arabic_dammatan, ARABIC DAMMATAN */ \ + OP(L'ٍ', LSHIFT(Key_K)) /* U+064d, XKB_KEY_Arabic_kasratan, ARABIC KASRATAN */ \ + OP(L'َ', Key_A) /* U+064e, XKB_KEY_Arabic_fatha, ARABIC FATHA */ \ + OP(L'ُ', Key_U) /* U+064f, XKB_KEY_Arabic_damma, ARABIC DAMMA */ \ + OP(L'ِ', Key_I) /* U+0650, XKB_KEY_Arabic_kasra, ARABIC KASRA */ \ + OP(L'ّ', LSHIFT(Key_L)) /* U+0651, XKB_KEY_Arabic_shadda, ARABIC SHADDA */ \ + OP(L'ْ', Key_O) /* U+0652, XKB_KEY_Arabic_sukun, ARABIC SUKUN */ \ + OP(L'ٖ', Key_E) \ + OP(L'ٗ', LSHIFT(Key_O)) \ + OP(L'٠', Key_0) /* U+0660, XKB_KEY_Arabic_0, ARABIC-INDIC DIGIT ZERO */ \ + OP(L'١', Key_1) /* U+0661, XKB_KEY_Arabic_1, ARABIC-INDIC DIGIT ONE */ \ + OP(L'٢', Key_2) /* U+0662, XKB_KEY_Arabic_2, ARABIC-INDIC DIGIT TWO */ \ + OP(L'٣', Key_3) /* U+0663, XKB_KEY_Arabic_3, ARABIC-INDIC DIGIT THREE */ \ + OP(L'٤', Key_4) /* U+0664, XKB_KEY_Arabic_4, ARABIC-INDIC DIGIT FOUR */ \ + OP(L'٥', Key_5) /* U+0665, XKB_KEY_Arabic_5, ARABIC-INDIC DIGIT FIVE */ \ + OP(L'٦', Key_6) /* U+0666, XKB_KEY_Arabic_6, ARABIC-INDIC DIGIT SIX */ \ + OP(L'٧', Key_7) /* U+0667, XKB_KEY_Arabic_7, ARABIC-INDIC DIGIT SEVEN */ \ + OP(L'٨', Key_8) /* U+0668, XKB_KEY_Arabic_8, ARABIC-INDIC DIGIT EIGHT */ \ + OP(L'٩', Key_9) /* U+0669, XKB_KEY_Arabic_9, ARABIC-INDIC DIGIT NINE */ \ + OP(L'٪', LSHIFT(Key_5)) /* U+066a, XKB_KEY_Arabic_percent, ARABIC PERCENT SIGN */ \ + OP(L'ٰ', Key_Backtick) /* U+0670, XKB_KEY_Arabic_superscript_alef, ARABIC LETTER SUPERSCRIPT ALEF */ \ + OP(L'ٹ', LSHIFT(Key_R)) /* U+0679, XKB_KEY_Arabic_tteh, ARABIC LETTER TTEH */ \ + OP(L'پ', Key_P) /* U+067e, XKB_KEY_Arabic_peh, ARABIC LETTER PEH */ \ + OP(L'چ', Key_C) /* U+0686, XKB_KEY_Arabic_tcheh, ARABIC LETTER TCHEH */ \ + OP(L'ڠ', Key_G) \ + OP(L'ڨ', Key_V) \ + OP(L'گ', LSHIFT(Key_Q)) /* U+06af, XKB_KEY_Arabic_gaf, ARABIC LETTER GAF */ \ + OP(L'۔', Key_Period) /* U+06d4, XKB_KEY_Arabic_fullstop, ARABIC FULL STOP */ \ + OP(L'﴾', LSHIFT(Key_9)) \ + OP(L'﴿', LSHIFT(Key_0)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_Arabic_0, Key_0) \ + OP(XKB_KEY_Arabic_1, Key_1) \ + OP(XKB_KEY_Arabic_2, Key_2) \ + OP(XKB_KEY_Arabic_3, Key_3) \ + OP(XKB_KEY_Arabic_4, Key_4) \ + OP(XKB_KEY_Arabic_5, Key_5) \ + OP(XKB_KEY_Arabic_6, Key_6) \ + OP(XKB_KEY_Arabic_7, Key_7) \ + OP(XKB_KEY_Arabic_8, Key_8) \ + OP(XKB_KEY_Arabic_9, Key_9) \ + OP(XKB_KEY_Arabic_ain, LSHIFT(Key_E)) \ + OP(XKB_KEY_Arabic_alef, LSHIFT(Key_A)) \ + OP(XKB_KEY_Arabic_alefmaksura, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Arabic_beh, Key_B) \ + OP(XKB_KEY_Arabic_comma, Key_Comma) \ + OP(XKB_KEY_Arabic_dad, LSHIFT(Key_D)) \ + OP(XKB_KEY_Arabic_dal, Key_D) \ + OP(XKB_KEY_Arabic_damma, Key_U) \ + OP(XKB_KEY_Arabic_dammatan, LSHIFT(Key_U)) \ + OP(XKB_KEY_Arabic_fatha, Key_A) \ + OP(XKB_KEY_Arabic_fathatan, LSHIFT(Key_F)) \ + OP(XKB_KEY_Arabic_feh, Key_F) \ + OP(XKB_KEY_Arabic_fullstop, Key_Period) \ + OP(XKB_KEY_Arabic_gaf, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Arabic_ghain, LSHIFT(Key_G)) \ + OP(XKB_KEY_Arabic_ha, Key_H) /* XKB_KEY_Arabic_heh, deprecated */ \ + OP(XKB_KEY_Arabic_hah, LSHIFT(Key_H)) \ + OP(XKB_KEY_Arabic_hamza, Key_Quote) \ + OP(XKB_KEY_Arabic_hamzaonalef, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Arabic_hamzaonwaw, LSHIFT(Key_W)) \ + OP(XKB_KEY_Arabic_hamzaonyeh, LSHIFT(Key_I)) \ + OP(XKB_KEY_Arabic_hamzaunderalef, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Arabic_jeem, Key_J) \ + OP(XKB_KEY_Arabic_kaf, Key_K) \ + OP(XKB_KEY_Arabic_kasra, Key_I) \ + OP(XKB_KEY_Arabic_kasratan, LSHIFT(Key_K)) \ + OP(XKB_KEY_Arabic_khah, Key_X) \ + OP(XKB_KEY_Arabic_lam, Key_L) \ + OP(XKB_KEY_Arabic_meem, Key_M) \ + OP(XKB_KEY_Arabic_noon, Key_N) \ + OP(XKB_KEY_Arabic_peh, Key_P) \ + OP(XKB_KEY_Arabic_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_Arabic_qaf, Key_Q) \ + OP(XKB_KEY_Arabic_question_mark, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Arabic_ra, Key_R) \ + OP(XKB_KEY_Arabic_sad, LSHIFT(Key_S)) \ + OP(XKB_KEY_Arabic_seen, Key_S) \ + OP(XKB_KEY_Arabic_semicolon, Key_Semicolon) \ + OP(XKB_KEY_Arabic_shadda, LSHIFT(Key_L)) \ + OP(XKB_KEY_Arabic_sheen, LSHIFT(Key_C)) \ + OP(XKB_KEY_Arabic_sukun, Key_O) \ + OP(XKB_KEY_Arabic_superscript_alef, Key_Backtick) \ + OP(XKB_KEY_Arabic_tah, LSHIFT(Key_T)) \ + OP(XKB_KEY_Arabic_tatweel, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Arabic_tcheh, Key_C) \ + OP(XKB_KEY_Arabic_teh, Key_T) \ + OP(XKB_KEY_Arabic_tehmarbuta, LSHIFT(Key_P)) \ + OP(XKB_KEY_Arabic_thal, LSHIFT(Key_B)) \ + OP(XKB_KEY_Arabic_theh, LSHIFT(Key_V)) \ + OP(XKB_KEY_Arabic_tteh, LSHIFT(Key_R)) \ + OP(XKB_KEY_Arabic_waw, Key_W) \ + OP(XKB_KEY_Arabic_yeh, Key_Y) \ + OP(XKB_KEY_Arabic_zah, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Arabic_zain, Key_Z) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace tz { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace tz +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ua/homophonic/keymap.h b/src/kaleidoscope/host_keymap/linux/ua/homophonic/keymap.h new file mode 100644 index 0000000000..ead24357f5 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ua/homophonic/keymap.h @@ -0,0 +1,380 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ua +// variant: homophonic + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_7)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('\'', LSHIFT(Key_6)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_4)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_3)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('_', LSHIFT(Key_Backtick)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_7)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'\'', LSHIFT(Key_6)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_4)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_3)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'_', LSHIFT(Key_Backtick)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Є', LSHIFT(Key_Minus)) /* U+0404, XKB_KEY_Ukrainian_IE, CYRILLIC CAPITAL LETTER UKRAINIAN IE */ \ + OP(L'І', LSHIFT(Key_I)) /* U+0406, XKB_KEY_Ukrainian_I, CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'Ї', LSHIFT(Key_Equals)) /* U+0407, XKB_KEY_Ukrainian_YI, CYRILLIC CAPITAL LETTER YI */ \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_V)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_H)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Quote)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Z)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_Y)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_J)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_X)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_C)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_Semicolon)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_W)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_RightBracket)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ь', LSHIFT(Key_NonUsPound)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Ю', LSHIFT(Key_LeftBracket)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Q)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_V) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_H) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Quote) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Z) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_Y) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_J) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_X) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_C) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_Semicolon) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_W) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_RightBracket) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ь', Key_NonUsPound) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'ю', Key_LeftBracket) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Q) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'є', Key_Minus) /* U+0454, XKB_KEY_Ukrainian_ie, CYRILLIC SMALL LETTER UKRAINIAN IE */ \ + OP(L'і', Key_I) /* U+0456, XKB_KEY_Ukrainian_i, CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'ї', Key_Equals) /* U+0457, XKB_KEY_Ukrainian_yi, CYRILLIC SMALL LETTER YI */ \ + OP(L'Ґ', LSHIFT(Key_G)) /* U+0490, XKB_KEY_Ukrainian_GHE_WITH_UPTURN, CYRILLIC CAPITAL LETTER GHE WITH UPTURN */ \ + OP(L'ґ', Key_G) /* U+0491, XKB_KEY_Ukrainian_ghe_with_upturn, CYRILLIC SMALL LETTER GHE WITH UPTURN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_H) \ + OP(XKB_KEY_Cyrillic_ha, Key_X) \ + OP(XKB_KEY_Cyrillic_i, Key_Y) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_W) \ + OP(XKB_KEY_Cyrillic_shcha, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_shorti, Key_J) \ + OP(XKB_KEY_Cyrillic_softsign, Key_NonUsPound) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_C) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_ve, Key_V) \ + OP(XKB_KEY_Cyrillic_ya, Key_Q) \ + OP(XKB_KEY_Cyrillic_yu, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_ze, Key_Z) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Quote) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Ukrainian_GHE_WITH_UPTURN, LSHIFT(Key_G)) \ + OP(XKB_KEY_Ukrainian_I, LSHIFT(Key_I)) /* XKB_KEY_Ukranian_I, deprecated */ \ + OP(XKB_KEY_Ukrainian_IE, LSHIFT(Key_Minus)) /* XKB_KEY_Ukranian_JE, deprecated */ \ + OP(XKB_KEY_Ukrainian_YI, LSHIFT(Key_Equals)) /* XKB_KEY_Ukranian_YI, deprecated */ \ + OP(XKB_KEY_Ukrainian_ghe_with_upturn, Key_G) \ + OP(XKB_KEY_Ukrainian_i, Key_I) /* XKB_KEY_Ukranian_i, deprecated */ \ + OP(XKB_KEY_Ukrainian_ie, Key_Minus) /* XKB_KEY_Ukranian_je, deprecated */ \ + OP(XKB_KEY_Ukrainian_yi, Key_Equals) /* XKB_KEY_Ukranian_yi, deprecated */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, LSHIFT(Key_6)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, LSHIFT(Key_4)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_7)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_3)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Backtick)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ua { +namespace homophonic { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace homophonic +} // namespace ua +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ua/legacy/keymap.h b/src/kaleidoscope/host_keymap/linux/ua/legacy/keymap.h new file mode 100644 index 0000000000..82ded66b89 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ua/legacy/keymap.h @@ -0,0 +1,376 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ua +// variant: legacy + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_6)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_7)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_5)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_8)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_6)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_7)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_5)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_8)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Є', LSHIFT(Key_Quote)) /* U+0404, XKB_KEY_Ukrainian_IE, CYRILLIC CAPITAL LETTER UKRAINIAN IE */ \ + OP(L'І', LSHIFT(Key_S)) /* U+0406, XKB_KEY_Ukrainian_I, CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'Ї', LSHIFT(Key_RightBracket)) /* U+0407, XKB_KEY_Ukrainian_YI, CYRILLIC CAPITAL LETTER YI */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'є', Key_Quote) /* U+0454, XKB_KEY_Ukrainian_ie, CYRILLIC SMALL LETTER UKRAINIAN IE */ \ + OP(L'і', Key_S) /* U+0456, XKB_KEY_Ukrainian_i, CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'ї', Key_RightBracket) /* U+0457, XKB_KEY_Ukrainian_yi, CYRILLIC SMALL LETTER YI */ \ + OP(L'Ґ', LSHIFT(Key_NonUsPound)) /* U+0490, XKB_KEY_Ukrainian_GHE_WITH_UPTURN, CYRILLIC CAPITAL LETTER GHE WITH UPTURN */ \ + OP(L'ґ', Key_NonUsPound) /* U+0491, XKB_KEY_Ukrainian_ghe_with_upturn, CYRILLIC SMALL LETTER GHE WITH UPTURN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Ukrainian_GHE_WITH_UPTURN, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Ukrainian_I, LSHIFT(Key_S)) /* XKB_KEY_Ukranian_I, deprecated */ \ + OP(XKB_KEY_Ukrainian_IE, LSHIFT(Key_Quote)) /* XKB_KEY_Ukranian_JE, deprecated */ \ + OP(XKB_KEY_Ukrainian_YI, LSHIFT(Key_RightBracket)) /* XKB_KEY_Ukranian_YI, deprecated */ \ + OP(XKB_KEY_Ukrainian_ghe_with_upturn, Key_NonUsPound) \ + OP(XKB_KEY_Ukrainian_i, Key_S) /* XKB_KEY_Ukranian_i, deprecated */ \ + OP(XKB_KEY_Ukrainian_ie, Key_Quote) /* XKB_KEY_Ukranian_je, deprecated */ \ + OP(XKB_KEY_Ukrainian_yi, Key_RightBracket) /* XKB_KEY_Ukranian_yi, deprecated */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_Backtick) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_4)) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, LSHIFT(Key_5)) \ + OP(XKB_KEY_comma, LSHIFT(Key_6)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_period, LSHIFT(Key_7)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_8)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ua { +namespace legacy { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace legacy +} // namespace ua +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ua/phonetic/keymap.h b/src/kaleidoscope/host_keymap/linux/ua/phonetic/keymap.h new file mode 100644 index 0000000000..26032090c6 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ua/phonetic/keymap.h @@ -0,0 +1,376 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ua +// variant: phonetic + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_6)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', LSHIFT(Key_7)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_5)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_8)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_6)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', LSHIFT(Key_7)) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_5)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_8)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Є', LSHIFT(Key_Period)) /* U+0404, XKB_KEY_Ukrainian_IE, CYRILLIC CAPITAL LETTER UKRAINIAN IE */ \ + OP(L'І', LSHIFT(Key_I)) /* U+0406, XKB_KEY_Ukrainian_I, CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'Ї', LSHIFT(Key_Comma)) /* U+0407, XKB_KEY_Ukrainian_YI, CYRILLIC CAPITAL LETTER YI */ \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_W)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_G)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_V)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Z)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_Y)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_J)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_H)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_C)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_Quote)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_LeftBracket)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_RightBracket)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ь', LSHIFT(Key_X)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Ю', LSHIFT(Key_NonUsPound)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Q)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_W) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_G) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_V) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Z) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_Y) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_J) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_H) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_C) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_Quote) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_LeftBracket) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_RightBracket) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ь', Key_X) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'ю', Key_NonUsPound) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Q) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'є', Key_Period) /* U+0454, XKB_KEY_Ukrainian_ie, CYRILLIC SMALL LETTER UKRAINIAN IE */ \ + OP(L'і', Key_I) /* U+0456, XKB_KEY_Ukrainian_i, CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'ї', Key_Comma) /* U+0457, XKB_KEY_Ukrainian_yi, CYRILLIC SMALL LETTER YI */ \ + OP(L'Ґ', LSHIFT(Key_Semicolon)) /* U+0490, XKB_KEY_Ukrainian_GHE_WITH_UPTURN, CYRILLIC CAPITAL LETTER GHE WITH UPTURN */ \ + OP(L'ґ', Key_Semicolon) /* U+0491, XKB_KEY_Ukrainian_ghe_with_upturn, CYRILLIC SMALL LETTER GHE WITH UPTURN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_Quote) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_G) \ + OP(XKB_KEY_Cyrillic_ha, Key_H) \ + OP(XKB_KEY_Cyrillic_i, Key_Y) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_shcha, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_shorti, Key_J) \ + OP(XKB_KEY_Cyrillic_softsign, Key_X) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_C) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_ve, Key_W) \ + OP(XKB_KEY_Cyrillic_ya, Key_Q) \ + OP(XKB_KEY_Cyrillic_yu, Key_NonUsPound) \ + OP(XKB_KEY_Cyrillic_ze, Key_Z) \ + OP(XKB_KEY_Cyrillic_zhe, Key_V) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Ukrainian_GHE_WITH_UPTURN, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Ukrainian_I, LSHIFT(Key_I)) /* XKB_KEY_Ukranian_I, deprecated */ \ + OP(XKB_KEY_Ukrainian_IE, LSHIFT(Key_Period)) /* XKB_KEY_Ukranian_JE, deprecated */ \ + OP(XKB_KEY_Ukrainian_YI, LSHIFT(Key_Comma)) /* XKB_KEY_Ukranian_YI, deprecated */ \ + OP(XKB_KEY_Ukrainian_ghe_with_upturn, Key_Semicolon) \ + OP(XKB_KEY_Ukrainian_i, Key_I) /* XKB_KEY_Ukranian_i, deprecated */ \ + OP(XKB_KEY_Ukrainian_ie, Key_Period) /* XKB_KEY_Ukranian_je, deprecated */ \ + OP(XKB_KEY_Ukrainian_yi, Key_Comma) /* XKB_KEY_Ukranian_yi, deprecated */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_Backtick) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_4)) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, LSHIFT(Key_5)) \ + OP(XKB_KEY_comma, LSHIFT(Key_6)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_period, LSHIFT(Key_7)) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_8)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ua { +namespace phonetic { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace phonetic +} // namespace ua +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ua/rstu/keymap.h b/src/kaleidoscope/host_keymap/linux/ua/rstu/keymap.h new file mode 100644 index 0000000000..9d5c1f82e3 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ua/rstu/keymap.h @@ -0,0 +1,376 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ua +// variant: rstu + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_1) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_2) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_3) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('%', LSHIFT(Key_NonUsPound)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_9) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_0) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_8) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_6) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_7) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsPound) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_5) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_4) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_Backtick)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_1) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_2) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_3) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'%', LSHIFT(Key_NonUsPound)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_9) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_0) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_8) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_6) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_7) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsPound) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_5) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_4) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_Backtick)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Є', LSHIFT(Key_Quote)) /* U+0404, XKB_KEY_Ukrainian_IE, CYRILLIC CAPITAL LETTER UKRAINIAN IE */ \ + OP(L'І', LSHIFT(Key_B)) /* U+0406, XKB_KEY_Ukrainian_I, CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'Ї', LSHIFT(Key_Slash)) /* U+0407, XKB_KEY_Ukrainian_YI, CYRILLIC CAPITAL LETTER YI */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_S)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_S) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'є', Key_Quote) /* U+0454, XKB_KEY_Ukrainian_ie, CYRILLIC SMALL LETTER UKRAINIAN IE */ \ + OP(L'і', Key_B) /* U+0456, XKB_KEY_Ukrainian_i, CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'ї', Key_Slash) /* U+0457, XKB_KEY_Ukrainian_yi, CYRILLIC SMALL LETTER YI */ \ + OP(L'Ґ', LSHIFT(Key_RightBracket)) /* U+0490, XKB_KEY_Ukrainian_GHE_WITH_UPTURN, CYRILLIC CAPITAL LETTER GHE WITH UPTURN */ \ + OP(L'ґ', Key_RightBracket) /* U+0491, XKB_KEY_Ukrainian_ghe_with_upturn, CYRILLIC SMALL LETTER GHE WITH UPTURN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_S) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Ukrainian_GHE_WITH_UPTURN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Ukrainian_I, LSHIFT(Key_B)) /* XKB_KEY_Ukranian_I, deprecated */ \ + OP(XKB_KEY_Ukrainian_IE, LSHIFT(Key_Quote)) /* XKB_KEY_Ukranian_JE, deprecated */ \ + OP(XKB_KEY_Ukrainian_YI, LSHIFT(Key_Slash)) /* XKB_KEY_Ukranian_YI, deprecated */ \ + OP(XKB_KEY_Ukrainian_ghe_with_upturn, Key_RightBracket) \ + OP(XKB_KEY_Ukrainian_i, Key_B) /* XKB_KEY_Ukranian_i, deprecated */ \ + OP(XKB_KEY_Ukrainian_ie, Key_Quote) /* XKB_KEY_Ukranian_je, deprecated */ \ + OP(XKB_KEY_Ukrainian_yi, Key_Slash) /* XKB_KEY_Ukranian_yi, deprecated */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_Backtick) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, Key_8) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, Key_5) \ + OP(XKB_KEY_comma, Key_6) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, Key_1) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, Key_3) \ + OP(XKB_KEY_parenleft, Key_9) \ + OP(XKB_KEY_parenright, Key_0) \ + OP(XKB_KEY_percent, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_period, Key_7) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_quotedbl, Key_2) \ + OP(XKB_KEY_semicolon, Key_4) \ + OP(XKB_KEY_slash, Key_NonUsPound) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ua { +namespace rstu { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace rstu +} // namespace ua +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ua/rstu_ru/keymap.h b/src/kaleidoscope/host_keymap/linux/ua/rstu_ru/keymap.h new file mode 100644 index 0000000000..a416fb6ec3 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ua/rstu_ru/keymap.h @@ -0,0 +1,376 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ua +// variant: rstu_ru + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_1) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', Key_2) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_3) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('%', LSHIFT(Key_NonUsPound)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_9) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_0) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_8) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_6) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_7) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsPound) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_5) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_4) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_Backtick)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_1) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', Key_2) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_3) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'%', LSHIFT(Key_NonUsPound)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_9) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_0) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_8) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_6) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_7) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsPound) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_5) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_4) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_Backtick)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Ё', LSHIFT(Key_Slash)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_S)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_S) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Slash) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, Key_Slash) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, Key_S) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Separator, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Separator, Separator, often comma */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_Backtick) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asterisk, Key_8) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, Key_5) \ + OP(XKB_KEY_comma, Key_6) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, Key_1) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, Key_3) \ + OP(XKB_KEY_parenleft, Key_9) \ + OP(XKB_KEY_parenright, Key_0) \ + OP(XKB_KEY_percent, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_period, Key_7) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_quotedbl, Key_2) \ + OP(XKB_KEY_semicolon, Key_4) \ + OP(XKB_KEY_slash, Key_NonUsPound) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ua { +namespace rstu_ru { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace rstu_ru +} // namespace ua +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ua/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/ua/standard/keymap.h new file mode 100644 index 0000000000..bff468150a --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ua/standard/keymap.h @@ -0,0 +1,463 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ua +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', RALT(Key_6)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', RALT(Key_7)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('[', RALT(Key_9)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_0)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('{', RALT(LSHIFT(Key_9))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(LSHIFT(Key_0))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', RALT(Key_6)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', RALT(Key_7)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'[', RALT(Key_9)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_0)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'{', RALT(LSHIFT(Key_9))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(LSHIFT(Key_0))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_3)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Comma)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_5)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_Equals))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_Period)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'ʼ', LSHIFT(Key_Backtick)) \ + OP(L'́', RALT(Key_Backtick)) \ + OP(L'Ё', RALT(LSHIFT(Key_T))) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'Є', LSHIFT(Key_Quote)) /* U+0404, XKB_KEY_Ukrainian_IE, CYRILLIC CAPITAL LETTER UKRAINIAN IE */ \ + OP(L'І', LSHIFT(Key_S)) /* U+0406, XKB_KEY_Ukrainian_I, CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'Ї', LSHIFT(Key_RightBracket)) /* U+0407, XKB_KEY_Ukrainian_YI, CYRILLIC CAPITAL LETTER YI */ \ + OP(L'Ў', RALT(LSHIFT(Key_E))) /* U+040e, XKB_KEY_Byelorussian_SHORTU, CYRILLIC CAPITAL LETTER SHORT U */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', RALT(LSHIFT(Key_RightBracket))) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', RALT(LSHIFT(Key_S))) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', RALT(LSHIFT(Key_Quote))) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', RALT(Key_RightBracket)) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', RALT(Key_S)) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', RALT(Key_Quote)) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', RALT(Key_T)) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'є', Key_Quote) /* U+0454, XKB_KEY_Ukrainian_ie, CYRILLIC SMALL LETTER UKRAINIAN IE */ \ + OP(L'і', Key_S) /* U+0456, XKB_KEY_Ukrainian_i, CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'ї', Key_RightBracket) /* U+0457, XKB_KEY_Ukrainian_yi, CYRILLIC SMALL LETTER YI */ \ + OP(L'ў', RALT(Key_E)) /* U+045e, XKB_KEY_Byelorussian_shortu, CYRILLIC SMALL LETTER SHORT U */ \ + OP(L'Ґ', LSHIFT(Key_NonUsPound)) /* U+0490, XKB_KEY_Ukrainian_GHE_WITH_UPTURN, CYRILLIC CAPITAL LETTER GHE WITH UPTURN */ \ + OP(L'ґ', Key_NonUsPound) /* U+0491, XKB_KEY_Ukrainian_ghe_with_upturn, CYRILLIC SMALL LETTER GHE WITH UPTURN */ \ + OP(L'–', RALT(LSHIFT(Key_Minus))) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(Key_Minus)) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'’', RALT(LSHIFT(Key_2))) \ + OP(L'“', RALT(LSHIFT(Key_Period))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_Comma))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'•', RALT(Key_8)) /* U+2022, XKB_KEY_enfilledcircbullet, BULLET */ \ + OP(L'…', RALT(LSHIFT(Key_Slash))) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'€', RALT(LSHIFT(Key_4))) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'₴', RALT(LSHIFT(Key_3))) \ + OP(L'№', LSHIFT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + OP(L'™', RALT(Key_N)) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'≠', RALT(Key_Equals)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Byelorussian_SHORTU, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Byelorussian_shortu, RALT(Key_E)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YERU, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, RALT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_hardsign, RALT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, RALT(Key_T)) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yeru, RALT(Key_S)) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Ukrainian_GHE_WITH_UPTURN, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Ukrainian_I, LSHIFT(Key_S)) /* XKB_KEY_Ukranian_I, deprecated */ \ + OP(XKB_KEY_Ukrainian_IE, LSHIFT(Key_Quote)) /* XKB_KEY_Ukranian_JE, deprecated */ \ + OP(XKB_KEY_Ukrainian_YI, LSHIFT(Key_RightBracket)) /* XKB_KEY_Ukranian_YI, deprecated */ \ + OP(XKB_KEY_Ukrainian_ghe_with_upturn, Key_NonUsPound) \ + OP(XKB_KEY_Ukrainian_i, Key_S) /* XKB_KEY_Ukranian_i, deprecated */ \ + OP(XKB_KEY_Ukrainian_ie, Key_Quote) /* XKB_KEY_Ukranian_je, deprecated */ \ + OP(XKB_KEY_Ukrainian_yi, Key_RightBracket) /* XKB_KEY_Ukranian_yi, deprecated */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_Backtick) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_braceright, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_bracketleft, RALT(Key_9)) \ + OP(XKB_KEY_bracketright, RALT(Key_0)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, LSHIFT(Key_6)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_degree, RALT(Key_5)) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_ellipsis, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_emdash, RALT(Key_Minus)) \ + OP(XKB_KEY_endash, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_enfilledcircbullet, RALT(Key_8)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_greater, RALT(Key_7)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Comma)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Period)) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_less, RALT(Key_6)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_notequal, RALT(Key_Equals)) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_3)) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_question, LSHIFT(Key_7)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_section, RALT(Key_3)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_4)) \ + OP(XKB_KEY_slash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_trademark, RALT(Key_N)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ua { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace ua +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ua/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/ua/sun_type6/keymap.h new file mode 100644 index 0000000000..dc35a4a8e9 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ua/sun_type6/keymap.h @@ -0,0 +1,570 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ua +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Є', RALT(LSHIFT(Key_Quote))) /* U+0404, XKB_KEY_Ukrainian_IE, CYRILLIC CAPITAL LETTER UKRAINIAN IE */ \ + OP(L'І', RALT(LSHIFT(Key_S))) /* U+0406, XKB_KEY_Ukrainian_I, CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'Ї', RALT(LSHIFT(Key_RightBracket))) /* U+0407, XKB_KEY_Ukrainian_YI, CYRILLIC CAPITAL LETTER YI */ \ + OP(L'А', RALT(LSHIFT(Key_F))) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', RALT(LSHIFT(Key_Comma))) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', RALT(LSHIFT(Key_D))) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', RALT(LSHIFT(Key_U))) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', RALT(LSHIFT(Key_L))) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', RALT(LSHIFT(Key_T))) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', RALT(LSHIFT(Key_Semicolon))) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', RALT(LSHIFT(Key_P))) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', RALT(LSHIFT(Key_B))) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', RALT(LSHIFT(Key_Q))) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', RALT(LSHIFT(Key_R))) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', RALT(LSHIFT(Key_K))) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', RALT(LSHIFT(Key_V))) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', RALT(LSHIFT(Key_Y))) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', RALT(LSHIFT(Key_J))) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', RALT(LSHIFT(Key_G))) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', RALT(LSHIFT(Key_H))) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', RALT(LSHIFT(Key_C))) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', RALT(LSHIFT(Key_N))) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', RALT(LSHIFT(Key_E))) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', RALT(LSHIFT(Key_A))) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', RALT(LSHIFT(Key_LeftBracket))) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', RALT(LSHIFT(Key_W))) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', RALT(LSHIFT(Key_X))) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', RALT(LSHIFT(Key_I))) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', RALT(LSHIFT(Key_O))) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ь', RALT(LSHIFT(Key_M))) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Ю', RALT(LSHIFT(Key_Period))) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', RALT(LSHIFT(Key_Z))) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', RALT(Key_F)) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', RALT(Key_Comma)) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', RALT(Key_D)) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', RALT(Key_U)) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', RALT(Key_L)) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', RALT(Key_T)) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', RALT(Key_Semicolon)) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', RALT(Key_P)) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', RALT(Key_B)) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', RALT(Key_Q)) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', RALT(Key_R)) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', RALT(Key_K)) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', RALT(Key_V)) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', RALT(Key_Y)) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', RALT(Key_J)) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', RALT(Key_G)) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', RALT(Key_H)) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', RALT(Key_C)) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', RALT(Key_N)) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', RALT(Key_E)) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', RALT(Key_A)) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', RALT(Key_LeftBracket)) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', RALT(Key_W)) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', RALT(Key_X)) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', RALT(Key_I)) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', RALT(Key_O)) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ь', RALT(Key_M)) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'ю', RALT(Key_Period)) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', RALT(Key_Z)) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'є', RALT(Key_Quote)) /* U+0454, XKB_KEY_Ukrainian_ie, CYRILLIC SMALL LETTER UKRAINIAN IE */ \ + OP(L'і', RALT(Key_S)) /* U+0456, XKB_KEY_Ukrainian_i, CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'ї', RALT(Key_RightBracket)) /* U+0457, XKB_KEY_Ukrainian_yi, CYRILLIC SMALL LETTER YI */ \ + OP(L'Ґ', RALT(LSHIFT(Key_NonUsPound))) /* U+0490, XKB_KEY_Ukrainian_GHE_WITH_UPTURN, CYRILLIC CAPITAL LETTER GHE WITH UPTURN */ \ + OP(L'ґ', RALT(Key_NonUsPound)) /* U+0491, XKB_KEY_Ukrainian_ghe_with_upturn, CYRILLIC SMALL LETTER GHE WITH UPTURN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Cyrillic_BE, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_Cyrillic_CHE, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_Cyrillic_DE, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Cyrillic_EF, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Cyrillic_EL, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Cyrillic_EM, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_Cyrillic_EN, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Cyrillic_ER, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_Cyrillic_ES, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Cyrillic_GHE, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Cyrillic_HA, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_Cyrillic_I, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_Cyrillic_IE, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Cyrillic_KA, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Cyrillic_O, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Cyrillic_PE, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Cyrillic_SHA, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Cyrillic_SHCHA, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Cyrillic_SHORTI, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_Cyrillic_TE, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Cyrillic_TSE, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_Cyrillic_U, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Cyrillic_VE, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Cyrillic_YA, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Cyrillic_YU, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_Cyrillic_ZE, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Cyrillic_ZHE, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Cyrillic_a, RALT(Key_F)) \ + OP(XKB_KEY_Cyrillic_be, RALT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_che, RALT(Key_X)) \ + OP(XKB_KEY_Cyrillic_de, RALT(Key_L)) \ + OP(XKB_KEY_Cyrillic_ef, RALT(Key_A)) \ + OP(XKB_KEY_Cyrillic_el, RALT(Key_K)) \ + OP(XKB_KEY_Cyrillic_em, RALT(Key_V)) \ + OP(XKB_KEY_Cyrillic_en, RALT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_er, RALT(Key_H)) \ + OP(XKB_KEY_Cyrillic_es, RALT(Key_C)) \ + OP(XKB_KEY_Cyrillic_ghe, RALT(Key_U)) \ + OP(XKB_KEY_Cyrillic_ha, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_i, RALT(Key_B)) \ + OP(XKB_KEY_Cyrillic_ie, RALT(Key_T)) \ + OP(XKB_KEY_Cyrillic_ka, RALT(Key_R)) \ + OP(XKB_KEY_Cyrillic_o, RALT(Key_J)) \ + OP(XKB_KEY_Cyrillic_pe, RALT(Key_G)) \ + OP(XKB_KEY_Cyrillic_sha, RALT(Key_I)) \ + OP(XKB_KEY_Cyrillic_shcha, RALT(Key_O)) \ + OP(XKB_KEY_Cyrillic_shorti, RALT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_softsign, RALT(Key_M)) \ + OP(XKB_KEY_Cyrillic_te, RALT(Key_N)) \ + OP(XKB_KEY_Cyrillic_tse, RALT(Key_W)) \ + OP(XKB_KEY_Cyrillic_u, RALT(Key_E)) \ + OP(XKB_KEY_Cyrillic_ve, RALT(Key_D)) \ + OP(XKB_KEY_Cyrillic_ya, RALT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_yu, RALT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ze, RALT(Key_P)) \ + OP(XKB_KEY_Cyrillic_zhe, RALT(Key_Semicolon)) \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ukrainian_GHE_WITH_UPTURN, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_Ukrainian_I, RALT(LSHIFT(Key_S))) /* XKB_KEY_Ukranian_I, deprecated */ \ + OP(XKB_KEY_Ukrainian_IE, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_Ukranian_JE, deprecated */ \ + OP(XKB_KEY_Ukrainian_YI, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_Ukranian_YI, deprecated */ \ + OP(XKB_KEY_Ukrainian_ghe_with_upturn, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_Ukrainian_i, RALT(Key_S)) /* XKB_KEY_Ukranian_i, deprecated */ \ + OP(XKB_KEY_Ukrainian_ie, RALT(Key_Quote)) /* XKB_KEY_Ukranian_je, deprecated */ \ + OP(XKB_KEY_Ukrainian_yi, RALT(Key_RightBracket)) /* XKB_KEY_Ukranian_yi, deprecated */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ua { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace ua +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ua/typewriter/keymap.h b/src/kaleidoscope/host_keymap/linux/ua/typewriter/keymap.h new file mode 100644 index 0000000000..7f86f83dfe --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ua/typewriter/keymap.h @@ -0,0 +1,374 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ua +// variant: typewriter + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_1) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Backtick)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', Key_0) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_NonUsPound) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_NonUsPound)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_6) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_7) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_3) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', Key_5) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_4) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', Key_9) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_1) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Backtick)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', Key_0) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_NonUsPound) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_NonUsPound)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_6) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_7) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_3) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_0)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_1)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_2)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_3)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_4)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_5)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_6)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_7)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_8)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_9)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', Key_5) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_4) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', Key_9) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'_', Key_8) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Є', LSHIFT(Key_Quote)) /* U+0404, XKB_KEY_Ukrainian_IE, CYRILLIC CAPITAL LETTER UKRAINIAN IE */ \ + OP(L'І', LSHIFT(Key_B)) /* U+0406, XKB_KEY_Ukrainian_I, CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'Ї', LSHIFT(Key_Slash)) /* U+0407, XKB_KEY_Ukrainian_YI, CYRILLIC CAPITAL LETTER YI */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_S)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_S) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'є', Key_Quote) /* U+0454, XKB_KEY_Ukrainian_ie, CYRILLIC SMALL LETTER UKRAINIAN IE */ \ + OP(L'і', Key_B) /* U+0456, XKB_KEY_Ukrainian_i, CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'ї', Key_Slash) /* U+0457, XKB_KEY_Ukrainian_yi, CYRILLIC SMALL LETTER YI */ \ + OP(L'Ґ', LSHIFT(Key_RightBracket)) /* U+0490, XKB_KEY_Ukrainian_GHE_WITH_UPTURN, CYRILLIC CAPITAL LETTER GHE WITH UPTURN */ \ + OP(L'ґ', Key_RightBracket) /* U+0491, XKB_KEY_Ukrainian_ghe_with_upturn, CYRILLIC SMALL LETTER GHE WITH UPTURN */ \ + OP(L'№', Key_2) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_0)) \ + OP(XKB_KEY_1, LSHIFT(Key_1)) \ + OP(XKB_KEY_2, LSHIFT(Key_2)) \ + OP(XKB_KEY_3, LSHIFT(Key_3)) \ + OP(XKB_KEY_4, LSHIFT(Key_4)) \ + OP(XKB_KEY_5, LSHIFT(Key_5)) \ + OP(XKB_KEY_6, LSHIFT(Key_6)) \ + OP(XKB_KEY_7, LSHIFT(Key_7)) \ + OP(XKB_KEY_8, LSHIFT(Key_8)) \ + OP(XKB_KEY_9, LSHIFT(Key_9)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_S) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Ukrainian_GHE_WITH_UPTURN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Ukrainian_I, LSHIFT(Key_B)) /* XKB_KEY_Ukranian_I, deprecated */ \ + OP(XKB_KEY_Ukrainian_IE, LSHIFT(Key_Quote)) /* XKB_KEY_Ukranian_JE, deprecated */ \ + OP(XKB_KEY_Ukrainian_YI, LSHIFT(Key_Slash)) /* XKB_KEY_Ukranian_YI, deprecated */ \ + OP(XKB_KEY_Ukrainian_ghe_with_upturn, Key_RightBracket) \ + OP(XKB_KEY_Ukrainian_i, Key_B) /* XKB_KEY_Ukranian_i, deprecated */ \ + OP(XKB_KEY_Ukrainian_ie, Key_Quote) /* XKB_KEY_Ukranian_je, deprecated */ \ + OP(XKB_KEY_Ukrainian_yi, Key_Slash) /* XKB_KEY_Ukranian_yi, deprecated */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_Backtick) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, Key_5) \ + OP(XKB_KEY_comma, Key_6) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, Key_1) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numerosign, Key_2) \ + OP(XKB_KEY_parenleft, Key_NonUsPound) \ + OP(XKB_KEY_parenright, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_percent, Key_0) \ + OP(XKB_KEY_period, Key_7) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, Key_9) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_semicolon, Key_4) \ + OP(XKB_KEY_slash, Key_3) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, Key_8) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ua { +namespace typewriter { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace typewriter +} // namespace ua +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/ua/winkeys/keymap.h b/src/kaleidoscope/host_keymap/linux/ua/winkeys/keymap.h new file mode 100644 index 0000000000..7ea3883da0 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/ua/winkeys/keymap.h @@ -0,0 +1,378 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: ua +// variant: winkeys + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'\'', Key_Backtick) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Є', LSHIFT(Key_Quote)) /* U+0404, XKB_KEY_Ukrainian_IE, CYRILLIC CAPITAL LETTER UKRAINIAN IE */ \ + OP(L'І', LSHIFT(Key_S)) /* U+0406, XKB_KEY_Ukrainian_I, CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'Ї', LSHIFT(Key_RightBracket)) /* U+0407, XKB_KEY_Ukrainian_YI, CYRILLIC CAPITAL LETTER YI */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_O)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_O) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'є', Key_Quote) /* U+0454, XKB_KEY_Ukrainian_ie, CYRILLIC SMALL LETTER UKRAINIAN IE */ \ + OP(L'і', Key_S) /* U+0456, XKB_KEY_Ukrainian_i, CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */ \ + OP(L'ї', Key_RightBracket) /* U+0457, XKB_KEY_Ukrainian_yi, CYRILLIC SMALL LETTER YI */ \ + OP(L'Ґ', LSHIFT(Key_NonUsPound)) /* U+0490, XKB_KEY_Ukrainian_GHE_WITH_UPTURN, CYRILLIC CAPITAL LETTER GHE WITH UPTURN */ \ + OP(L'ґ', Key_NonUsPound) /* U+0491, XKB_KEY_Ukrainian_ghe_with_upturn, CYRILLIC SMALL LETTER GHE WITH UPTURN */ \ + OP(L'№', LSHIFT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shcha, Key_O) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Ukrainian_GHE_WITH_UPTURN, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Ukrainian_I, LSHIFT(Key_S)) /* XKB_KEY_Ukranian_I, deprecated */ \ + OP(XKB_KEY_Ukrainian_IE, LSHIFT(Key_Quote)) /* XKB_KEY_Ukranian_JE, deprecated */ \ + OP(XKB_KEY_Ukrainian_YI, LSHIFT(Key_RightBracket)) /* XKB_KEY_Ukranian_YI, deprecated */ \ + OP(XKB_KEY_Ukrainian_ghe_with_upturn, Key_NonUsPound) \ + OP(XKB_KEY_Ukrainian_i, Key_S) /* XKB_KEY_Ukranian_i, deprecated */ \ + OP(XKB_KEY_Ukrainian_ie, Key_Quote) /* XKB_KEY_Ukranian_je, deprecated */ \ + OP(XKB_KEY_Ukrainian_yi, Key_RightBracket) /* XKB_KEY_Ukranian_yi, deprecated */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_Backtick) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_colon, LSHIFT(Key_6)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_question, LSHIFT(Key_7)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_4)) \ + OP(XKB_KEY_slash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace ua { +namespace winkeys { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace winkeys +} // namespace ua +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/alt-intl-unicode/keymap.h b/src/kaleidoscope/host_keymap/linux/us/alt-intl-unicode/keymap.h new file mode 100644 index 0000000000..5b1206edcf --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/alt-intl-unicode/keymap.h @@ -0,0 +1,566 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: alt-intl-unicode + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_C))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_4))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsPound))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_LeftBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_NonUsPound)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_6)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_7)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_8)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(Key_Slash)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_A))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(LSHIFT(Key_Q))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', RALT(LSHIFT(Key_W))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Z))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'É', RALT(LSHIFT(Key_E))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(LSHIFT(Key_I))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ó', RALT(LSHIFT(Key_O))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', RALT(LSHIFT(Key_P))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'Ø', RALT(LSHIFT(Key_L))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', RALT(LSHIFT(Key_U))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', RALT(LSHIFT(Key_Y))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', RALT(Key_A)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_Q)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', RALT(Key_W)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_Z)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'é', RALT(Key_E)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', RALT(Key_I)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ó', RALT(Key_O)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', RALT(Key_P)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ø', RALT(Key_L)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ú', RALT(Key_U)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', RALT(Key_Y)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Œ', RALT(LSHIFT(Key_K))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_K)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'̀', RALT(Key_Backtick)) \ + OP(L'́', RALT(Key_Quote)) \ + OP(L'̂', RALT(LSHIFT(Key_6))) \ + OP(L'̃', RALT(LSHIFT(Key_Backtick))) \ + OP(L'̄', RALT(Key_Minus)) \ + OP(L'̆', RALT(LSHIFT(Key_9))) \ + OP(L'̇', RALT(LSHIFT(Key_Period))) \ + OP(L'̈', RALT(LSHIFT(Key_Semicolon))) \ + OP(L'̉', RALT(LSHIFT(Key_Slash))) \ + OP(L'̊', RALT(LSHIFT(Key_0))) \ + OP(L'̋', RALT(Key_Equals)) \ + OP(L'̌', RALT(LSHIFT(Key_Comma))) \ + OP(L'̛', RALT(LSHIFT(Key_7))) \ + OP(L'̣', RALT(Key_Period)) \ + OP(L'̧', RALT(Key_Comma)) \ + OP(L'̨', RALT(Key_Semicolon)) \ + OP(L'—', RALT(LSHIFT(Key_Minus))) \ + OP(L'‘', RALT(Key_9)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_0)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_LeftBracket))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_RightBracket))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_A)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_Q)) \ + OP(XKB_KEY_ae, RALT(Key_Z)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_W)) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, RALT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_5))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, RALT(Key_E)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_9)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, RALT(Key_O)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_P)) \ + OP(XKB_KEY_oe, RALT(Key_K)) \ + OP(XKB_KEY_onehalf, RALT(Key_7)) \ + OP(XKB_KEY_onequarter, RALT(Key_6)) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_oslash, RALT(Key_L)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_0)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threequarters, RALT(Key_8)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, RALT(Key_U)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_Y)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace alt_intl_unicode { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace alt_intl_unicode +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/alt-intl/keymap.h b/src/kaleidoscope/host_keymap/linux/us/alt-intl/keymap.h new file mode 100644 index 0000000000..99ca222b0f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/alt-intl/keymap.h @@ -0,0 +1,462 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: alt-intl + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¢', RALT(LSHIFT(Key_E))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'‘', RALT(Key_9)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_0)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Period)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(LSHIFT(Key_Minus))) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_9))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Comma))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Comma)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_Quote)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(Key_Equals)) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_Backtick) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_Slash)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(Key_Minus)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_Semicolon)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_9)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_0)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace alt_intl { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace alt_intl +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/altgr-intl/keymap.h b/src/kaleidoscope/host_keymap/linux/us/altgr-intl/keymap.h new file mode 100644 index 0000000000..f0521dfd94 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/altgr-intl/keymap.h @@ -0,0 +1,586 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: altgr-intl + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_C))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_4))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_Minus)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsPound))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_LeftBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_NonUsPound)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_V)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_Semicolon))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_Semicolon)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_6))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(LSHIFT(Key_7))) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_8))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(Key_Slash)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_A))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(LSHIFT(Key_Q))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', RALT(LSHIFT(Key_W))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Z))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_Comma))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'É', RALT(LSHIFT(Key_E))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ë', RALT(LSHIFT(Key_R))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Í', RALT(LSHIFT(Key_I))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ï', RALT(LSHIFT(Key_J))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ó', RALT(LSHIFT(Key_O))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', RALT(LSHIFT(Key_P))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Equals)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_L))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', RALT(LSHIFT(Key_U))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', RALT(LSHIFT(Key_Y))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', RALT(Key_A)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_Q)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', RALT(Key_W)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_Z)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_Comma)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', RALT(Key_E)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ë', RALT(Key_R)) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'í', RALT(Key_I)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ï', RALT(Key_J)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ó', RALT(Key_O)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', RALT(Key_P)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Equals))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_L)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ú', RALT(Key_U)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', RALT(Key_Y)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Œ', RALT(LSHIFT(Key_K))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_K)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'‘', RALT(Key_9)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_0)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_LeftBracket))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_RightBracket))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_A)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_Q)) \ + OP(XKB_KEY_ae, RALT(Key_Z)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_W)) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_Comma)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, RALT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Period)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Quote)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(LSHIFT(Key_Minus))) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_9))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_5))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_2))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_Backtick)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(Key_7)) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_8)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, RALT(Key_E)) \ + OP(XKB_KEY_ediaeresis, RALT(Key_R)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, RALT(Key_I)) \ + OP(XKB_KEY_idiaeresis, RALT(Key_J)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_9)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(Key_Equals)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, RALT(Key_O)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_P)) \ + OP(XKB_KEY_oe, RALT(Key_K)) \ + OP(XKB_KEY_onehalf, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_oslash, RALT(Key_L)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_Semicolon)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_V)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_0)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, RALT(Key_U)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_Y)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_Minus)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace altgr_intl { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace altgr_intl +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/ats/keymap.h b/src/kaleidoscope/host_keymap/linux/us/ats/keymap.h new file mode 100644 index 0000000000..4d14d2fd3a --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/ats/keymap.h @@ -0,0 +1,467 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: ats + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Á', RALT(LSHIFT(Key_A))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'É', RALT(LSHIFT(Key_E))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(LSHIFT(Key_I))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ó', RALT(LSHIFT(Key_O))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ú', RALT(LSHIFT(Key_U))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'á', RALT(Key_A)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'é', RALT(Key_E)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', RALT(Key_I)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', RALT(Key_O)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ú', RALT(Key_U)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'Č', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'č', RALT(Key_RightBracket)) \ + OP(L'Ɔ', RALT(LSHIFT(Key_C))) \ + OP(L'ɔ', RALT(Key_C)) \ + OP(L'ʔ', RALT(Key_Slash)) \ + OP(L'̓', RALT(Key_Comma)) \ + OP(L'θ', RALT(Key_LeftBracket)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_RightControl) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, RALT(Key_E)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace ats { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ats +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/carpalx-altgr-intl/keymap.h b/src/kaleidoscope/host_keymap/linux/us/carpalx-altgr-intl/keymap.h new file mode 100644 index 0000000000..b7e7f7ce6f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/carpalx-altgr-intl/keymap.h @@ -0,0 +1,592 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: carpalx-altgr-intl + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_J)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_O)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_A)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_U)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_Semicolon)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_H)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_B)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_R)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_E)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_F)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_L)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_M)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_G)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_D)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_T)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_J) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_O) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_A) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_U) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_Semicolon) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_H) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_B) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_R) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_E) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_F) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_L) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_M) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_G) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_D) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_T) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_J)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_O)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_A)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_U)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_Semicolon)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_H)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_B)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_R)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_E)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_F)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_L)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_M)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_G)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_D)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_T)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_J) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_O) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_A) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_U) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_Semicolon) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_H) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_B) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_R) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_E) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_F) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_L) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_M) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_G) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_D) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_T) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_R))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_4))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_Minus)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsPound))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_R)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_LeftBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_NonUsPound)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_G)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Q)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_E)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_Q))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_6))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(LSHIFT(Key_7))) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_8))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(Key_Slash)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_J))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(LSHIFT(Key_U))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', RALT(LSHIFT(Key_M))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_V))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'É', RALT(LSHIFT(Key_K))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ë', RALT(LSHIFT(Key_Comma))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Í', RALT(LSHIFT(Key_H))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ï', RALT(LSHIFT(Key_Y))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_A))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_F))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ó', RALT(LSHIFT(Key_L))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', RALT(LSHIFT(Key_O))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Equals)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_P))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', RALT(LSHIFT(Key_Semicolon))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', RALT(LSHIFT(Key_I))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_D))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', RALT(Key_J)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_U)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', RALT(Key_M)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_V)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', RALT(Key_K)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ë', RALT(Key_Comma)) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'í', RALT(Key_H)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ï', RALT(Key_Y)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_A)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', RALT(Key_F)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ó', RALT(Key_L)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', RALT(Key_O)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Equals))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_P)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ú', RALT(Key_Semicolon)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', RALT(Key_I)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_D)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ğ', RALT(LSHIFT(Key_W))) \ + OP(L'ğ', RALT(Key_W)) \ + OP(L'İ', RALT(LSHIFT(Key_N))) \ + OP(L'ı', RALT(Key_N)) \ + OP(L'Œ', RALT(LSHIFT(Key_B))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_B)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ş', RALT(LSHIFT(Key_X))) \ + OP(L'ş', RALT(Key_X)) \ + OP(L'‘', RALT(Key_9)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_0)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_LeftBracket))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_RightBracket))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_J)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_B, LSHIFT(Key_O)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_A)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_K)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_A))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_U)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_W)) \ + OP(XKB_KEY_H, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_H)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_B)) \ + OP(XKB_KEY_K, LSHIFT(Key_N)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_R)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_E)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_F)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_L)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_P, LSHIFT(Key_M)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_G)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_D)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_D))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_I)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_T)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_J) \ + OP(XKB_KEY_aacute, RALT(Key_J)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_U)) \ + OP(XKB_KEY_ae, RALT(Key_V)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_M)) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_O) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_colon, LSHIFT(Key_P)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_R)) \ + OP(XKB_KEY_currency, RALT(Key_4)) \ + OP(XKB_KEY_d, Key_A) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Period)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Quote)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(LSHIFT(Key_Minus))) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_9))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_5))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_2))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_Backtick)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(Key_7)) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_8)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_Q)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_K) \ + OP(XKB_KEY_eacute, RALT(Key_K)) \ + OP(XKB_KEY_ediaeresis, RALT(Key_Comma)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_A)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_U) \ + OP(XKB_KEY_g, Key_W) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_h, Key_Semicolon) \ + OP(XKB_KEY_i, Key_H) \ + OP(XKB_KEY_iacute, RALT(Key_H)) \ + OP(XKB_KEY_idiaeresis, RALT(Key_Y)) \ + OP(XKB_KEY_j, Key_B) \ + OP(XKB_KEY_k, Key_N) \ + OP(XKB_KEY_l, Key_R) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_9)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_m, Key_E) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_E)) \ + OP(XKB_KEY_multiply, RALT(Key_Equals)) \ + OP(XKB_KEY_n, Key_F) \ + OP(XKB_KEY_notsign, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_ntilde, RALT(Key_F)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_L) \ + OP(XKB_KEY_oacute, RALT(Key_L)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_O)) \ + OP(XKB_KEY_oe, RALT(Key_B)) \ + OP(XKB_KEY_onehalf, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_oslash, RALT(Key_P)) \ + OP(XKB_KEY_p, Key_M) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_G) \ + OP(XKB_KEY_registered, RALT(Key_G)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_0)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, Key_P) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_t, Key_D) \ + OP(XKB_KEY_thorn, RALT(Key_D)) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_I) \ + OP(XKB_KEY_uacute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_I)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_T) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_Minus)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace carpalx_altgr_intl { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace carpalx_altgr_intl +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/carpalx-full-altgr-intl/keymap.h b/src/kaleidoscope/host_keymap/linux/us/carpalx-full-altgr-intl/keymap.h new file mode 100644 index 0000000000..497de950c9 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/carpalx-full-altgr-intl/keymap.h @@ -0,0 +1,592 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: carpalx-full-altgr-intl + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_J)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_Y)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_A)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_V)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_Semicolon)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_H)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_B)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_R)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_E)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_F)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_L)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_M)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_G)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_D)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_O)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_T)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_U)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_J) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_Y) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_A) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_V) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_Semicolon) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_H) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_B) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_R) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_E) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_F) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_L) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_M) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_G) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_D) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_O) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_T) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_U) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_J)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_Y)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_A)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_V)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_Semicolon)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_H)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_B)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_R)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_E)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_F)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_L)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_M)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_G)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_D)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_O)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_T)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_U)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_J) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_Y) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_A) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_V) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_Semicolon) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_H) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_B) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_R) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_E) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_F) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_L) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_M) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_G) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_D) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_O) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_T) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_U) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_R))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_4))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_Minus)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsPound))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_R)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_LeftBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_NonUsPound)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_G)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Q)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_E)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_Q))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_6))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(LSHIFT(Key_7))) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_8))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(Key_Slash)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_J))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(LSHIFT(Key_U))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', RALT(LSHIFT(Key_M))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_V))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'É', RALT(LSHIFT(Key_K))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ë', RALT(LSHIFT(Key_Comma))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Í', RALT(LSHIFT(Key_H))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ï', RALT(LSHIFT(Key_Y))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_A))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_F))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ó', RALT(LSHIFT(Key_L))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', RALT(LSHIFT(Key_O))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Equals)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_P))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', RALT(LSHIFT(Key_Semicolon))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', RALT(LSHIFT(Key_I))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_D))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', RALT(Key_J)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_U)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', RALT(Key_M)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_V)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', RALT(Key_K)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ë', RALT(Key_Comma)) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'í', RALT(Key_H)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ï', RALT(Key_Y)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_A)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', RALT(Key_F)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ó', RALT(Key_L)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', RALT(Key_O)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Equals))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_P)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ú', RALT(Key_Semicolon)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', RALT(Key_I)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_D)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ğ', RALT(LSHIFT(Key_W))) \ + OP(L'ğ', RALT(Key_W)) \ + OP(L'İ', RALT(LSHIFT(Key_N))) \ + OP(L'ı', RALT(Key_N)) \ + OP(L'Œ', RALT(LSHIFT(Key_B))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_B)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ş', RALT(LSHIFT(Key_X))) \ + OP(L'ş', RALT(Key_X)) \ + OP(L'‘', RALT(Key_9)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_0)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_LeftBracket))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_RightBracket))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_J)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_B, LSHIFT(Key_Y)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_A)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_K)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_A))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_V)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_W)) \ + OP(XKB_KEY_H, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_H)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_B)) \ + OP(XKB_KEY_K, LSHIFT(Key_N)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_R)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_E)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_F)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_L)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_P, LSHIFT(Key_M)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_G)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_D)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_D))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_I)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_O)) \ + OP(XKB_KEY_W, LSHIFT(Key_T)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_U)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_J) \ + OP(XKB_KEY_aacute, RALT(Key_J)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_U)) \ + OP(XKB_KEY_ae, RALT(Key_V)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_M)) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_Y) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_colon, LSHIFT(Key_P)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_R)) \ + OP(XKB_KEY_currency, RALT(Key_4)) \ + OP(XKB_KEY_d, Key_A) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Period)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Quote)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(LSHIFT(Key_Minus))) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_9))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_5))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_2))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_Backtick)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(Key_7)) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_8)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_Q)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_K) \ + OP(XKB_KEY_eacute, RALT(Key_K)) \ + OP(XKB_KEY_ediaeresis, RALT(Key_Comma)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_A)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_V) \ + OP(XKB_KEY_g, Key_W) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_h, Key_Semicolon) \ + OP(XKB_KEY_i, Key_H) \ + OP(XKB_KEY_iacute, RALT(Key_H)) \ + OP(XKB_KEY_idiaeresis, RALT(Key_Y)) \ + OP(XKB_KEY_j, Key_B) \ + OP(XKB_KEY_k, Key_N) \ + OP(XKB_KEY_l, Key_R) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_9)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_m, Key_E) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_E)) \ + OP(XKB_KEY_multiply, RALT(Key_Equals)) \ + OP(XKB_KEY_n, Key_F) \ + OP(XKB_KEY_notsign, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_ntilde, RALT(Key_F)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_L) \ + OP(XKB_KEY_oacute, RALT(Key_L)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_O)) \ + OP(XKB_KEY_oe, RALT(Key_B)) \ + OP(XKB_KEY_onehalf, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_oslash, RALT(Key_P)) \ + OP(XKB_KEY_p, Key_M) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_G) \ + OP(XKB_KEY_registered, RALT(Key_G)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_0)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, Key_P) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_t, Key_D) \ + OP(XKB_KEY_thorn, RALT(Key_D)) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_I) \ + OP(XKB_KEY_uacute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_I)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_O) \ + OP(XKB_KEY_w, Key_T) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_U) \ + OP(XKB_KEY_yen, RALT(Key_Minus)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace carpalx_full_altgr_intl { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace carpalx_full_altgr_intl +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/carpalx-full-intl/keymap.h b/src/kaleidoscope/host_keymap/linux/us/carpalx-full-intl/keymap.h new file mode 100644 index 0000000000..512e88f975 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/carpalx-full-intl/keymap.h @@ -0,0 +1,592 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: carpalx-full-intl + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_J)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_Y)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_A)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_V)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_Semicolon)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_H)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_B)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_R)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_E)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_F)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_L)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_M)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_G)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_D)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_O)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_T)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_U)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_6))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_J) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_Y) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_A) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_V) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_Semicolon) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_H) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_B) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_R) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_E) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_F) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_L) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_M) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_G) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_D) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_O) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_T) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_U) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_J)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_Y)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_A)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_V)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_Semicolon)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_H)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_B)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_R)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_E)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_F)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_L)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_M)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_G)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_D)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_O)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_T)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_U)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_6))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_J) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_Y) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_A) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_V) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_Semicolon) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_H) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_B) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_R) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_E) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_F) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_L) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_M) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_G) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_D) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_O) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_T) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_U) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_R))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_4))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_Minus)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsPound))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_R)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_LeftBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_NonUsPound)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_G)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Q)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_E)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_Q))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_6)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_7)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_8)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(Key_Slash)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_J))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(LSHIFT(Key_U))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', RALT(LSHIFT(Key_M))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_V))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'É', RALT(LSHIFT(Key_K))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ë', RALT(LSHIFT(Key_Comma))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Í', RALT(LSHIFT(Key_H))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ï', RALT(LSHIFT(Key_Y))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_A))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_F))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ó', RALT(LSHIFT(Key_L))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', RALT(LSHIFT(Key_O))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Equals)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_P))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', RALT(LSHIFT(Key_Semicolon))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', RALT(LSHIFT(Key_I))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_D))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', RALT(Key_J)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_U)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', RALT(Key_M)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_V)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', RALT(Key_K)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ë', RALT(Key_Comma)) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'í', RALT(Key_H)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ï', RALT(Key_Y)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_A)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', RALT(Key_F)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ó', RALT(Key_L)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', RALT(Key_O)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Equals))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_P)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ú', RALT(Key_Semicolon)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', RALT(Key_I)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_D)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ğ', RALT(LSHIFT(Key_W))) \ + OP(L'ğ', RALT(Key_W)) \ + OP(L'İ', RALT(LSHIFT(Key_N))) \ + OP(L'ı', RALT(Key_N)) \ + OP(L'Œ', RALT(LSHIFT(Key_B))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_B)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ş', RALT(LSHIFT(Key_X))) \ + OP(L'ş', RALT(Key_X)) \ + OP(L'‘', RALT(Key_9)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_0)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_LeftBracket))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_RightBracket))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_J)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_B, LSHIFT(Key_Y)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_A)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_K)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_A))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_V)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_W)) \ + OP(XKB_KEY_H, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_H)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_B)) \ + OP(XKB_KEY_K, LSHIFT(Key_N)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_R)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_E)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_F)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_L)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_P, LSHIFT(Key_M)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_G)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_D)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_D))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_I)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_O)) \ + OP(XKB_KEY_W, LSHIFT(Key_T)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_U)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_J) \ + OP(XKB_KEY_aacute, RALT(Key_J)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_U)) \ + OP(XKB_KEY_ae, RALT(Key_V)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_M)) \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_Y) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_colon, LSHIFT(Key_P)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_R)) \ + OP(XKB_KEY_currency, RALT(Key_4)) \ + OP(XKB_KEY_d, Key_A) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Period)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(LSHIFT(Key_Minus))) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_9))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_5))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_Quote)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_2))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_Backtick) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_Q)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_K) \ + OP(XKB_KEY_eacute, RALT(Key_K)) \ + OP(XKB_KEY_ediaeresis, RALT(Key_Comma)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_A)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_V) \ + OP(XKB_KEY_g, Key_W) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_h, Key_Semicolon) \ + OP(XKB_KEY_i, Key_H) \ + OP(XKB_KEY_iacute, RALT(Key_H)) \ + OP(XKB_KEY_idiaeresis, RALT(Key_Y)) \ + OP(XKB_KEY_j, Key_B) \ + OP(XKB_KEY_k, Key_N) \ + OP(XKB_KEY_l, Key_R) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_9)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_m, Key_E) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_E)) \ + OP(XKB_KEY_multiply, RALT(Key_Equals)) \ + OP(XKB_KEY_n, Key_F) \ + OP(XKB_KEY_notsign, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_ntilde, RALT(Key_F)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_L) \ + OP(XKB_KEY_oacute, RALT(Key_L)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_O)) \ + OP(XKB_KEY_oe, RALT(Key_B)) \ + OP(XKB_KEY_onehalf, RALT(Key_7)) \ + OP(XKB_KEY_onequarter, RALT(Key_6)) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_oslash, RALT(Key_P)) \ + OP(XKB_KEY_p, Key_M) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_r, Key_G) \ + OP(XKB_KEY_registered, RALT(Key_G)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_0)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, Key_P) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_t, Key_D) \ + OP(XKB_KEY_thorn, RALT(Key_D)) \ + OP(XKB_KEY_threequarters, RALT(Key_8)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_I) \ + OP(XKB_KEY_uacute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_I)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_O) \ + OP(XKB_KEY_w, Key_T) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_U) \ + OP(XKB_KEY_yen, RALT(Key_Minus)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace carpalx_full_intl { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace carpalx_full_intl +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/carpalx-full/keymap.h b/src/kaleidoscope/host_keymap/linux/us/carpalx-full/keymap.h new file mode 100644 index 0000000000..f3ca7d77c7 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/carpalx-full/keymap.h @@ -0,0 +1,439 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: carpalx-full + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_J)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_Y)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_A)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_V)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_Semicolon)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_H)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_B)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_R)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_E)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_F)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_L)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_M)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_G)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_D)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_O)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_T)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_U)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_J) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_Y) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_A) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_V) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_Semicolon) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_H) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_B) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_R) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_E) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_F) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_L) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_M) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_G) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_D) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_O) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_T) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_U) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_J)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_Y)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_A)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_V)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_Semicolon)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_H)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_B)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_R)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_E)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_F)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_L)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_M)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_G)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_D)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_O)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_T)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_U)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_J) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_Y) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_A) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_V) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_Semicolon) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_H) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_B) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_R) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_E) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_F) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_L) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_M) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_G) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_D) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_O) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_T) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_U) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_J)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_Y)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_A)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_K)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_V)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_W)) \ + OP(XKB_KEY_H, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_H)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_B)) \ + OP(XKB_KEY_K, LSHIFT(Key_N)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_R)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_E)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_F)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_L)) \ + OP(XKB_KEY_P, LSHIFT(Key_M)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_G)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_D)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_I)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_O)) \ + OP(XKB_KEY_W, LSHIFT(Key_T)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_U)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_J) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_Y) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_P)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_A) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_K) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_V) \ + OP(XKB_KEY_g, Key_W) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_Semicolon) \ + OP(XKB_KEY_i, Key_H) \ + OP(XKB_KEY_j, Key_B) \ + OP(XKB_KEY_k, Key_N) \ + OP(XKB_KEY_l, Key_R) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_E) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_F) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_L) \ + OP(XKB_KEY_p, Key_M) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_G) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_P) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_D) \ + OP(XKB_KEY_u, Key_I) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_O) \ + OP(XKB_KEY_w, Key_T) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_U) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace carpalx_full { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace carpalx_full +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/carpalx-intl/keymap.h b/src/kaleidoscope/host_keymap/linux/us/carpalx-intl/keymap.h new file mode 100644 index 0000000000..bfa87ca2bb --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/carpalx-intl/keymap.h @@ -0,0 +1,592 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: carpalx-intl + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_J)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_O)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_A)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_U)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_Semicolon)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_H)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_B)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_R)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_E)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_F)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_L)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_M)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_G)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_D)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_T)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_6))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_J) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_O) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_A) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_U) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_Semicolon) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_H) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_B) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_R) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_E) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_F) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_L) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_M) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_G) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_D) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_T) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_J)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_O)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_A)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_U)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_Semicolon)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_H)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_B)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_R)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_E)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_F)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_L)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_M)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_G)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_D)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_T)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_6))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_J) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_O) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_A) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_U) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_Semicolon) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_H) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_B) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_R) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_E) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_F) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_L) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_M) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_G) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_D) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_T) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_R))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_4))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_Minus)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsPound))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_R)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_LeftBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_NonUsPound)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_G)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(Key_Q)) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_E)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(LSHIFT(Key_Q))) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_6)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_7)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_8)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(Key_Slash)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_J))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(LSHIFT(Key_U))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', RALT(LSHIFT(Key_M))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_V))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'É', RALT(LSHIFT(Key_K))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Ë', RALT(LSHIFT(Key_Comma))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Í', RALT(LSHIFT(Key_H))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ï', RALT(LSHIFT(Key_Y))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ð', RALT(LSHIFT(Key_A))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_F))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ó', RALT(LSHIFT(Key_L))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', RALT(LSHIFT(Key_O))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Equals)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_P))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', RALT(LSHIFT(Key_Semicolon))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', RALT(LSHIFT(Key_I))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_D))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', RALT(Key_J)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_U)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', RALT(Key_M)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_V)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', RALT(Key_K)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ë', RALT(Key_Comma)) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'í', RALT(Key_H)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ï', RALT(Key_Y)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ð', RALT(Key_A)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', RALT(Key_F)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ó', RALT(Key_L)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', RALT(Key_O)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Equals))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_P)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ú', RALT(Key_Semicolon)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', RALT(Key_I)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_D)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Ğ', RALT(LSHIFT(Key_W))) \ + OP(L'ğ', RALT(Key_W)) \ + OP(L'İ', RALT(LSHIFT(Key_N))) \ + OP(L'ı', RALT(Key_N)) \ + OP(L'Œ', RALT(LSHIFT(Key_B))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_B)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ş', RALT(LSHIFT(Key_X))) \ + OP(L'ş', RALT(Key_X)) \ + OP(L'‘', RALT(Key_9)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_0)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_LeftBracket))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_RightBracket))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_J)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_B, LSHIFT(Key_O)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_A)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_K)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_A))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_U)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_W)) \ + OP(XKB_KEY_H, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_H)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_B)) \ + OP(XKB_KEY_K, LSHIFT(Key_N)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_R)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_E)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_F)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_L)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_P, LSHIFT(Key_M)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_G)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_D)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_D))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_I)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_T)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_J) \ + OP(XKB_KEY_aacute, RALT(Key_J)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_U)) \ + OP(XKB_KEY_ae, RALT(Key_V)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_M)) \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_O) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_colon, LSHIFT(Key_P)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_R)) \ + OP(XKB_KEY_currency, RALT(Key_4)) \ + OP(XKB_KEY_d, Key_A) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Period)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(LSHIFT(Key_Minus))) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_9))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_5))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_Quote)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_2))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_Backtick) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(Key_Q)) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_K) \ + OP(XKB_KEY_eacute, RALT(Key_K)) \ + OP(XKB_KEY_ediaeresis, RALT(Key_Comma)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_A)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_U) \ + OP(XKB_KEY_g, Key_W) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_h, Key_Semicolon) \ + OP(XKB_KEY_i, Key_H) \ + OP(XKB_KEY_iacute, RALT(Key_H)) \ + OP(XKB_KEY_idiaeresis, RALT(Key_Y)) \ + OP(XKB_KEY_j, Key_B) \ + OP(XKB_KEY_k, Key_N) \ + OP(XKB_KEY_l, Key_R) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_9)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_m, Key_E) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_E)) \ + OP(XKB_KEY_multiply, RALT(Key_Equals)) \ + OP(XKB_KEY_n, Key_F) \ + OP(XKB_KEY_notsign, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_ntilde, RALT(Key_F)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_L) \ + OP(XKB_KEY_oacute, RALT(Key_L)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_O)) \ + OP(XKB_KEY_oe, RALT(Key_B)) \ + OP(XKB_KEY_onehalf, RALT(Key_7)) \ + OP(XKB_KEY_onequarter, RALT(Key_6)) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_oslash, RALT(Key_P)) \ + OP(XKB_KEY_p, Key_M) \ + OP(XKB_KEY_paragraph, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_r, Key_G) \ + OP(XKB_KEY_registered, RALT(Key_G)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_0)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, Key_P) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_t, Key_D) \ + OP(XKB_KEY_thorn, RALT(Key_D)) \ + OP(XKB_KEY_threequarters, RALT(Key_8)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_I) \ + OP(XKB_KEY_uacute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_I)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_T) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_Minus)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace carpalx_intl { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace carpalx_intl +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/carpalx/keymap.h b/src/kaleidoscope/host_keymap/linux/us/carpalx/keymap.h new file mode 100644 index 0000000000..d552176448 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/carpalx/keymap.h @@ -0,0 +1,439 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: carpalx + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_J)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_O)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_A)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_U)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_Semicolon)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_H)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_B)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_R)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_E)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_F)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_L)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_M)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_G)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_D)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_T)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_J) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_O) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_A) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_U) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_Semicolon) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_H) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_B) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_R) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_E) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_F) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_L) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_M) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_G) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_D) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_T) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_J)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_O)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_A)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_U)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_W)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_Semicolon)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_H)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_B)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_R)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_E)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_F)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_L)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_M)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_G)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_D)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_T)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_J) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_O) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_A) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_U) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_W) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_Semicolon) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_H) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_B) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_R) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_E) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_F) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_L) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_M) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_G) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_D) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_T) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_J)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_O)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_A)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_K)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_U)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_W)) \ + OP(XKB_KEY_H, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_H)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_B)) \ + OP(XKB_KEY_K, LSHIFT(Key_N)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_R)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_E)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_F)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_L)) \ + OP(XKB_KEY_P, LSHIFT(Key_M)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_G)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_D)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_I)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_T)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_J) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_O) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_P)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_A) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_K) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_U) \ + OP(XKB_KEY_g, Key_W) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_Semicolon) \ + OP(XKB_KEY_i, Key_H) \ + OP(XKB_KEY_j, Key_B) \ + OP(XKB_KEY_k, Key_N) \ + OP(XKB_KEY_l, Key_R) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_E) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_F) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_L) \ + OP(XKB_KEY_p, Key_M) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_G) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_P) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_D) \ + OP(XKB_KEY_u, Key_I) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_T) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace carpalx { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace carpalx +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/chr/keymap.h b/src/kaleidoscope/host_keymap/linux/us/chr/keymap.h new file mode 100644 index 0000000000..f610a19dac --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/chr/keymap.h @@ -0,0 +1,299 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: chr + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Ꭰ', Key_A) \ + OP(L'Ꭱ', Key_E) \ + OP(L'Ꭲ', Key_I) \ + OP(L'Ꭳ', Key_O) \ + OP(L'Ꭴ', Key_U) \ + OP(L'Ꭵ', Key_V) \ + OP(L'Ꭶ', Key_G) \ + OP(L'Ꭷ', LSHIFT(Key_K)) \ + OP(L'Ꭸ', Key_B) \ + OP(L'Ꭹ', Key_F) \ + OP(L'Ꭺ', Key_Q) \ + OP(L'Ꭻ', LSHIFT(Key_J)) \ + OP(L'Ꭼ', Key_Z) \ + OP(L'Ꭽ', LSHIFT(Key_U)) \ + OP(L'Ꭾ', LSHIFT(Key_L)) \ + OP(L'Ꭿ', Key_H) \ + OP(L'Ꮀ', LSHIFT(Key_4)) \ + OP(L'Ꮁ', LSHIFT(Key_1)) \ + OP(L'Ꮂ', LSHIFT(Key_H)) \ + OP(L'Ꮃ', Key_W) \ + OP(L'Ꮄ', LSHIFT(Key_Period)) \ + OP(L'Ꮅ', Key_L) \ + OP(L'Ꮆ', Key_RightBracket) \ + OP(L'Ꮇ', LSHIFT(Key_M)) \ + OP(L'Ꮈ', Key_K) \ + OP(L'Ꮉ', LSHIFT(Key_5)) \ + OP(L'Ꮊ', LSHIFT(Key_8)) \ + OP(L'Ꮋ', LSHIFT(Key_N)) \ + OP(L'Ꮌ', LSHIFT(Key_Minus)) \ + OP(L'Ꮍ', LSHIFT(Key_Equals)) \ + OP(L'Ꮎ', Key_N) \ + OP(L'Ꮏ', Key_Minus) \ + OP(L'Ꮑ', Key_P) \ + OP(L'Ꮒ', Key_Slash) \ + OP(L'Ꮓ', LSHIFT(Key_Z)) \ + OP(L'Ꮔ', Key_0) \ + OP(L'Ꮕ', Key_M) \ + OP(L'Ꮖ', LSHIFT(Key_Q)) \ + OP(L'Ꮗ', LSHIFT(Key_2)) \ + OP(L'Ꮘ', LSHIFT(Key_F)) \ + OP(L'Ꮙ', LSHIFT(Key_Slash)) \ + OP(L'Ꮚ', LSHIFT(Key_Backtick)) \ + OP(L'Ꮛ', Key_7) \ + OP(L'Ꮜ', LSHIFT(Key_A)) \ + OP(L'Ꮝ', Key_S) \ + OP(L'Ꮞ', LSHIFT(Key_S)) \ + OP(L'Ꮟ', LSHIFT(Key_R)) \ + OP(L'Ꮠ', LSHIFT(Key_D)) \ + OP(L'Ꮡ', LSHIFT(Key_LeftBracket)) \ + OP(L'Ꮢ', Key_9) \ + OP(L'Ꮣ', Key_C) \ + OP(L'Ꮤ', Key_T) \ + OP(L'Ꮥ', Key_LeftBracket) \ + OP(L'Ꮦ', Key_8) \ + OP(L'Ꮧ', Key_D) \ + OP(L'Ꮨ', LSHIFT(Key_T)) \ + OP(L'Ꮩ', Key_4) \ + OP(L'Ꮪ', Key_J) \ + OP(L'Ꮫ', Key_R) \ + OP(L'Ꮬ', Key_6) \ + OP(L'Ꮭ', LSHIFT(Key_6)) \ + OP(L'Ꮮ', LSHIFT(Key_V)) \ + OP(L'Ꮯ', LSHIFT(Key_C)) \ + OP(L'Ꮰ', LSHIFT(Key_Semicolon)) \ + OP(L'Ꮱ', LSHIFT(Key_7)) \ + OP(L'Ꮲ', LSHIFT(Key_Comma)) \ + OP(L'Ꮳ', LSHIFT(Key_E)) \ + OP(L'Ꮴ', LSHIFT(Key_RightBracket)) \ + OP(L'Ꮵ', LSHIFT(Key_G)) \ + OP(L'Ꮶ', Key_5) \ + OP(L'Ꮷ', LSHIFT(Key_3)) \ + OP(L'Ꮸ', Key_Semicolon) \ + OP(L'Ꮹ', Key_NonUsPound) \ + OP(L'Ꮺ', LSHIFT(Key_P)) \ + OP(L'Ꮻ', LSHIFT(Key_W)) \ + OP(L'Ꮼ', LSHIFT(Key_O)) \ + OP(L'Ꮽ', LSHIFT(Key_X)) \ + OP(L'Ꮾ', LSHIFT(Key_NonUsPound)) \ + OP(L'Ꮿ', Key_Y) \ + OP(L'Ᏸ', LSHIFT(Key_B)) \ + OP(L'Ᏹ', LSHIFT(Key_I)) \ + OP(L'Ᏺ', LSHIFT(Key_Y)) \ + OP(L'Ᏻ', Key_Equals) \ + OP(L'Ᏼ', Key_X) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace chr { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace chr +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/colemak/keymap.h b/src/kaleidoscope/host_keymap/linux/us/colemak/keymap.h new file mode 100644 index 0000000000..49215688d3 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/colemak/keymap.h @@ -0,0 +1,582 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: colemak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_G)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_E)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_T)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_L)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_Y)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_Semicolon)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_S)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_D)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_O)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_G) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_E) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_T) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_L) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_Y) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_Semicolon) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_S) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_D) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_O) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_G)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_E)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_T)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_L)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_Y)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_U)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_Semicolon)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_S)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_D)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_O)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_G) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_E) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_T) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_L) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_Y) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_U) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_Semicolon) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_S) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_D) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_O) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(LSHIFT(Key_Spacebar))) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_4)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_4))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(LSHIFT(Key_5))) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'ª', RALT(Key_3)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_LeftBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'²', RALT(LSHIFT(Key_2))) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(LSHIFT(Key_3))) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'º', RALT(Key_2)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_Slash)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_A))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ã', RALT(LSHIFT(Key_E))) /* U+00c3, XKB_KEY_Atilde, LATIN CAPITAL LETTER A WITH TILDE */ \ + OP(L'Ä', RALT(LSHIFT(Key_Q))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', RALT(LSHIFT(Key_W))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Z))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'É', RALT(LSHIFT(Key_K))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(LSHIFT(Key_L))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_7))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_J))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ó', RALT(LSHIFT(Key_Semicolon))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Õ', RALT(LSHIFT(Key_Quote))) /* U+00d5, XKB_KEY_Otilde, LATIN CAPITAL LETTER O WITH TILDE */ \ + OP(L'Ö', RALT(LSHIFT(Key_P))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Equals)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_R))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', RALT(LSHIFT(Key_I))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', RALT(LSHIFT(Key_O))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_8))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_D)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', RALT(Key_A)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ã', RALT(Key_E)) /* U+00e3, XKB_KEY_atilde, LATIN SMALL LETTER A WITH TILDE */ \ + OP(L'ä', RALT(Key_Q)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', RALT(Key_W)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_Z)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', RALT(Key_K)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', RALT(Key_L)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ð', RALT(Key_7)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', RALT(Key_J)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ó', RALT(Key_Semicolon)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'õ', RALT(Key_Quote)) /* U+00f5, XKB_KEY_otilde, LATIN SMALL LETTER O WITH TILDE */ \ + OP(L'ö', RALT(Key_P)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Equals))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_R)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ú', RALT(Key_I)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', RALT(Key_O)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_8)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Đ', RALT(LSHIFT(Key_Y))) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_Y)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_6))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_6)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'Ł', RALT(LSHIFT(Key_U))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_U)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Œ', RALT(LSHIFT(Key_V))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_V)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Minus))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_9)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_0)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_9))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_0))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'‹', RALT(LSHIFT(Key_LeftBracket))) \ + OP(L'›', RALT(LSHIFT(Key_RightBracket))) \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_Atilde, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_G)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_E, LSHIFT(Key_K)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_7))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_E)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_T)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_I, LSHIFT(Key_L)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_Y)) \ + OP(XKB_KEY_K, LSHIFT(Key_N)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_U)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_J)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Otilde, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_S)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_D)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_F)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_8))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_I)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_O)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_A)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_Q)) \ + OP(XKB_KEY_ae, RALT(Key_Z)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_W)) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_atilde, RALT(Key_E)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(Key_4)) \ + OP(XKB_KEY_colon, LSHIFT(Key_P)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_G) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Period)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_N)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_F)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(Key_B)) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(Key_H)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Comma)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_X)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_G)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_F))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_S)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_macron, RALT(Key_M)) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(Key_T)) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Backtick)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_dstroke, RALT(Key_Y)) \ + OP(XKB_KEY_e, Key_K) \ + OP(XKB_KEY_eacute, RALT(Key_K)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_7)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_E) \ + OP(XKB_KEY_g, Key_T) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_hstroke, RALT(Key_6)) \ + OP(XKB_KEY_i, Key_L) \ + OP(XKB_KEY_iacute, RALT(Key_L)) \ + OP(XKB_KEY_j, Key_Y) \ + OP(XKB_KEY_k, Key_N) \ + OP(XKB_KEY_l, Key_U) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_9)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_lstroke, RALT(Key_U)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(Key_2)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(Key_Equals)) \ + OP(XKB_KEY_n, Key_J) \ + OP(XKB_KEY_nobreakspace, RALT(LSHIFT(Key_Spacebar))) \ + OP(XKB_KEY_ntilde, RALT(Key_J)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_Semicolon) \ + OP(XKB_KEY_oacute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_P)) \ + OP(XKB_KEY_oe, RALT(Key_V)) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_3)) \ + OP(XKB_KEY_oslash, RALT(Key_R)) \ + OP(XKB_KEY_otilde, RALT(Key_Quote)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_S) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_0)) \ + OP(XKB_KEY_s, Key_D) \ + OP(XKB_KEY_semicolon, Key_P) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_D)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_t, Key_F) \ + OP(XKB_KEY_thorn, RALT(Key_8)) \ + OP(XKB_KEY_threesuperior, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_twosuperior, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_u, Key_I) \ + OP(XKB_KEY_uacute, RALT(Key_I)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_O)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_O) \ + OP(XKB_KEY_yen, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace colemak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace colemak +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/crd/keymap.h b/src/kaleidoscope/host_keymap/linux/us/crd/keymap.h new file mode 100644 index 0000000000..4a8eb846df --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/crd/keymap.h @@ -0,0 +1,455 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: crd + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'č', RALT(Key_C)) \ + OP(L'š', RALT(Key_S)) \ + OP(L'ǰ', RALT(Key_J)) \ + OP(L'ɔ', RALT(Key_O)) \ + OP(L'ə', RALT(Key_V)) /* U+0259, XKB_KEY_schwa, LATIN SMALL LETTER SCHWA */ \ + OP(L'ɛ', RALT(Key_E)) \ + OP(L'ɪ', RALT(Key_I)) \ + OP(L'ɫ', RALT(Key_NonUsPound)) \ + OP(L'ʔ', RALT(Key_7)) \ + OP(L'ʕ', RALT(Key_6)) \ + OP(L'ʷ', RALT(Key_W)) \ + OP(L'̣', RALT(Key_Period)) \ + OP(L'√', RALT(Key_Q)) /* U+221a, XKB_KEY_squareroot, SQUARE ROOT */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_RightControl) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_schwa, RALT(Key_V)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_squareroot, RALT(Key_Q)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace crd { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace crd +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/cz_sk_de/keymap.h b/src/kaleidoscope/host_keymap/linux/us/cz_sk_de/keymap.h new file mode 100644 index 0000000000..46bc108f1b --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/cz_sk_de/keymap.h @@ -0,0 +1,529 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: cz_sk_de + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Á', RALT(LSHIFT(Key_8))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(LSHIFT(Key_Quote))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'É', RALT(LSHIFT(Key_0))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(LSHIFT(Key_9))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ó', RALT(LSHIFT(Key_O))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ô', RALT(LSHIFT(Key_P))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', RALT(LSHIFT(Key_Semicolon))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'Ú', RALT(LSHIFT(Key_1))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', RALT(LSHIFT(Key_LeftBracket))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Ý', RALT(LSHIFT(Key_7))) /* U+00dd, XKB_KEY_Yacute, LATIN CAPITAL LETTER Y WITH ACUTE */ \ + OP(L'ß', RALT(Key_Minus)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', RALT(Key_8)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_Quote)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'é', RALT(Key_0)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', RALT(Key_9)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ó', RALT(Key_O)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ô', RALT(Key_P)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', RALT(Key_Semicolon)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ú', RALT(Key_1)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', RALT(Key_LeftBracket)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'ý', RALT(Key_7)) /* U+00fd, XKB_KEY_yacute, LATIN SMALL LETTER Y WITH ACUTE */ \ + OP(L'Č', RALT(LSHIFT(Key_4))) /* U+010c, XKB_KEY_Ccaron, LATIN CAPITAL LETTER C WITH CARON */ \ + OP(L'č', RALT(Key_4)) /* U+010d, XKB_KEY_ccaron, LATIN SMALL LETTER C WITH CARON */ \ + OP(L'Ď', RALT(LSHIFT(Key_D))) /* U+010e, XKB_KEY_Dcaron, LATIN CAPITAL LETTER D WITH CARON */ \ + OP(L'ď', RALT(Key_D)) /* U+010f, XKB_KEY_dcaron, LATIN SMALL LETTER D WITH CARON */ \ + OP(L'Ě', RALT(LSHIFT(Key_2))) /* U+011a, XKB_KEY_Ecaron, LATIN CAPITAL LETTER E WITH CARON */ \ + OP(L'ě', RALT(Key_2)) /* U+011b, XKB_KEY_ecaron, LATIN SMALL LETTER E WITH CARON */ \ + OP(L'Ľ', RALT(LSHIFT(Key_L))) /* U+013d, XKB_KEY_Lcaron, LATIN CAPITAL LETTER L WITH CARON */ \ + OP(L'ľ', RALT(Key_L)) /* U+013e, XKB_KEY_lcaron, LATIN SMALL LETTER L WITH CARON */ \ + OP(L'Ň', RALT(LSHIFT(Key_N))) /* U+0147, XKB_KEY_Ncaron, LATIN CAPITAL LETTER N WITH CARON */ \ + OP(L'ň', RALT(Key_N)) /* U+0148, XKB_KEY_ncaron, LATIN SMALL LETTER N WITH CARON */ \ + OP(L'Ř', RALT(LSHIFT(Key_5))) /* U+0158, XKB_KEY_Rcaron, LATIN CAPITAL LETTER R WITH CARON */ \ + OP(L'ř', RALT(Key_5)) /* U+0159, XKB_KEY_rcaron, LATIN SMALL LETTER R WITH CARON */ \ + OP(L'Š', RALT(LSHIFT(Key_3))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_3)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ť', RALT(LSHIFT(Key_T))) /* U+0164, XKB_KEY_Tcaron, LATIN CAPITAL LETTER T WITH CARON */ \ + OP(L'ť', RALT(Key_T)) /* U+0165, XKB_KEY_tcaron, LATIN SMALL LETTER T WITH CARON */ \ + OP(L'Ů', RALT(LSHIFT(Key_U))) /* U+016e, XKB_KEY_Uring, LATIN CAPITAL LETTER U WITH RING ABOVE */ \ + OP(L'ů', RALT(Key_U)) /* U+016f, XKB_KEY_uring, LATIN SMALL LETTER U WITH RING ABOVE */ \ + OP(L'Ž', RALT(LSHIFT(Key_6))) /* U+017d, XKB_KEY_Zcaron, LATIN CAPITAL LETTER Z WITH CARON */ \ + OP(L'ž', RALT(Key_6)) /* U+017e, XKB_KEY_zcaron, LATIN SMALL LETTER Z WITH CARON */ \ + OP(L'ẞ', RALT(LSHIFT(Key_Minus))) \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccaron, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Dcaron, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_Ecaron, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Lcaron, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Ncaron, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Rcaron, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_3))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Tcaron, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_Uring, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Yacute, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Zcaron, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_8)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_Quote)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccaron, RALT(Key_4)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dcaron, RALT(Key_D)) \ + OP(XKB_KEY_dead_acute, RALT(Key_Equals)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, RALT(Key_0)) \ + OP(XKB_KEY_ecaron, RALT(Key_2)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, RALT(Key_9)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_lcaron, RALT(Key_L)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_ncaron, RALT(Key_N)) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, RALT(Key_O)) \ + OP(XKB_KEY_ocircumflex, RALT(Key_P)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_Semicolon)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rcaron, RALT(Key_5)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, RALT(Key_3)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Minus)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_tcaron, RALT(Key_T)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, RALT(Key_1)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_uring, RALT(Key_U)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yacute, RALT(Key_7)) \ + OP(XKB_KEY_z, Key_Z) \ + OP(XKB_KEY_zcaron, RALT(Key_6)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace cz_sk_de { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace cz_sk_de +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/dvorak-alt-intl/keymap.h b/src/kaleidoscope/host_keymap/linux/us/dvorak-alt-intl/keymap.h new file mode 100644 index 0000000000..6834fe2cff --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/dvorak-alt-intl/keymap.h @@ -0,0 +1,486 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: dvorak-alt-intl + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'·', RALT(LSHIFT(Key_E))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'ß', RALT(Key_Semicolon)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'à', RALT(Key_A)) /* U+00e0, XKB_KEY_agrave, LATIN SMALL LETTER A WITH GRAVE */ \ + OP(L'â', RALT(Key_Z)) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ä', RALT(Key_W)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'ç', RALT(Key_I)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'è', RALT(Key_C)) /* U+00e8, XKB_KEY_egrave, LATIN SMALL LETTER E WITH GRAVE */ \ + OP(L'é', RALT(Key_D)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'ê', RALT(Key_E)) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'ë', RALT(Key_R)) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'î', RALT(Key_G)) /* U+00ee, XKB_KEY_icircumflex, LATIN SMALL LETTER I WITH CIRCUMFLEX */ \ + OP(L'ï', RALT(Key_B)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ô', RALT(Key_S)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', RALT(Key_X)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ù', RALT(Key_V)) /* U+00f9, XKB_KEY_ugrave, LATIN SMALL LETTER U WITH GRAVE */ \ + OP(L'û', RALT(Key_F)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', RALT(Key_T)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acircumflex, RALT(Key_Z)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_W)) \ + OP(XKB_KEY_agrave, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Q) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, Key_Minus) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_ccedilla, RALT(Key_I)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Z)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dead_abovedot, RALT(LSHIFT(Key_I))) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Q)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_W))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_R))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(LSHIFT(Key_Q))) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Z))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_9)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_X))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_Equals)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_eacute, RALT(Key_D)) \ + OP(XKB_KEY_ecircumflex, RALT(Key_E)) \ + OP(XKB_KEY_ediaeresis, RALT(Key_R)) \ + OP(XKB_KEY_egrave, RALT(Key_C)) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_icircumflex, RALT(Key_G)) \ + OP(XKB_KEY_idiaeresis, RALT(Key_B)) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_ocircumflex, RALT(Key_S)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_X)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_plus, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Q)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_semicolon, Key_Z) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Semicolon)) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_ucircumflex, RALT(Key_F)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_T)) \ + OP(XKB_KEY_ugrave, RALT(Key_V)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace dvorak_alt_intl { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak_alt_intl +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/dvorak-classic/keymap.h b/src/kaleidoscope/host_keymap/linux/us/dvorak-classic/keymap.h new file mode 100644 index 0000000000..a4495eae91 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/dvorak-classic/keymap.h @@ -0,0 +1,439 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: dvorak-classic + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_5)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_LeftBracket)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_4)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_9)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_3)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_2)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_LeftBracket) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_6)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_7)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Q) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_7) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_5) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_8) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_4) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_9) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_3) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_0) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_2) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_Minus) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_6) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Q)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_8)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_1) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_0)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_1)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_5)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_LeftBracket)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_4)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_9)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_3)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_2)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_LeftBracket) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_6)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_7)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Q) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_7) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_5) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_8) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_4) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_9) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_3) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_0) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_2) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_Minus) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_6) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Q)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_8)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_1) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_0)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_1)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_7) \ + OP(XKB_KEY_1, Key_5) \ + OP(XKB_KEY_2, Key_8) \ + OP(XKB_KEY_3, Key_4) \ + OP(XKB_KEY_4, Key_9) \ + OP(XKB_KEY_5, Key_3) \ + OP(XKB_KEY_6, Key_0) \ + OP(XKB_KEY_7, Key_2) \ + OP(XKB_KEY_8, Key_Minus) \ + OP(XKB_KEY_9, Key_6) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_2)) \ + OP(XKB_KEY_apostrophe, Key_LeftBracket) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_0)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_at, LSHIFT(Key_8)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_1)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, Key_1) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_colon, LSHIFT(Key_Z)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dollar, LSHIFT(Key_9)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_exclam, LSHIFT(Key_5)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_4)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_6)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_7)) \ + OP(XKB_KEY_percent, LSHIFT(Key_3)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_plus, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_Q)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_semicolon, Key_Z) \ + OP(XKB_KEY_slash, Key_Q) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace dvorak_classic { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak_classic +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/dvorak-intl/keymap.h b/src/kaleidoscope/host_keymap/linux/us/dvorak-intl/keymap.h new file mode 100644 index 0000000000..81b3ff56f8 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/dvorak-intl/keymap.h @@ -0,0 +1,571 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: dvorak-intl + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(LSHIFT(Key_Q))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Q)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_6))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(LSHIFT(Key_Q))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Q)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_6))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_I))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_4))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsPound))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_Semicolon))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_I)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_Minus)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_NonUsPound)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_O)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_Z))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_Z)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_Equals)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_6)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_7)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_8)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(Key_LeftBracket)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_A))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(LSHIFT(Key_X))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', RALT(LSHIFT(Key_Comma))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Slash))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_W))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'É', RALT(LSHIFT(Key_D))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(LSHIFT(Key_G))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_H))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_L))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ó', RALT(LSHIFT(Key_S))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', RALT(LSHIFT(Key_R))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'Ø', RALT(LSHIFT(Key_P))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', RALT(LSHIFT(Key_F))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', RALT(LSHIFT(Key_T))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_K))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_Semicolon)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', RALT(Key_A)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_X)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', RALT(Key_Comma)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_Slash)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_W)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', RALT(Key_D)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', RALT(Key_G)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ð', RALT(Key_H)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', RALT(Key_L)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ó', RALT(Key_S)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', RALT(Key_R)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ø', RALT(Key_P)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ú', RALT(Key_F)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', RALT(Key_T)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_K)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Œ', RALT(LSHIFT(Key_V))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_V)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'‘', RALT(Key_9)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_0)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_Minus))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_Equals))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_X))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_H))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_K))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_T))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_A)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_X)) \ + OP(XKB_KEY_ae, RALT(Key_Slash)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Q)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_Comma)) \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, Key_Minus) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_ccedilla, RALT(Key_W)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Z)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_copyright, RALT(Key_I)) \ + OP(XKB_KEY_currency, RALT(Key_4)) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_E)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Q) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_9))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_E))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_5))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_Q)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_2))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_Backtick) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_eacute, RALT(Key_D)) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_eth, RALT(Key_H)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Minus)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Equals)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_iacute, RALT(Key_G)) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_9)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_notsign, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_ntilde, RALT(Key_L)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_oacute, RALT(Key_S)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_R)) \ + OP(XKB_KEY_oe, RALT(Key_V)) \ + OP(XKB_KEY_onehalf, RALT(Key_7)) \ + OP(XKB_KEY_onequarter, RALT(Key_6)) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_oslash, RALT(Key_P)) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_paragraph, RALT(Key_Z)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_plus, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_questiondown, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_quotedbl, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_registered, RALT(Key_O)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_0)) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_semicolon, Key_Z) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_Semicolon)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_thorn, RALT(Key_K)) \ + OP(XKB_KEY_threequarters, RALT(Key_8)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_uacute, RALT(Key_F)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_T)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace dvorak_intl { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak_intl +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/dvorak-l/keymap.h b/src/kaleidoscope/host_keymap/linux/us/dvorak-l/keymap.h new file mode 100644 index 0000000000..49042a35b4 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/dvorak-l/keymap.h @@ -0,0 +1,439 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: dvorak-l + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_Equals)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Z)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_0)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_9)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_LeftBracket)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_Quote)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Z) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_Slash)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_Period)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_A) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_O) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_3) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_Period) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_Equals) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_Minus) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_0) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_9) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_LeftBracket) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_P) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_Quote) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_Semicolon) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_Slash) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Q) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_O)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_3)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_Minus)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_K)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_E)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_D)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_F)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_J)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_5)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_C)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_M)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_8)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_S)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_7)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_6)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_I)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_4)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_W)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_Y)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_U)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_G)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_T)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_B)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_R)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_L)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_1) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_2) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_P)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_A)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_K) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_E) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_D) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_F) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_J) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_5) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_C) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_M) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_8) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_S) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_7) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_6) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_I) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_4) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_W) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_Y) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_U) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_G) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_T) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_B) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_R) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_L) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_1)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_2)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_Equals)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Z)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_0)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_9)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_LeftBracket)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_Quote)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Z) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_Slash)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_Period)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_A) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_O) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_3) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_Period) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_Equals) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_Minus) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_0) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_9) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_LeftBracket) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_P) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_Quote) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_Semicolon) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_Slash) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Q) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_O)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_3)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_Minus)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_K)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_E)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_D)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_F)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_J)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_5)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_C)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_M)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_8)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_S)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_7)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_6)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_I)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_4)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_W)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_Y)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_U)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_G)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_T)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_B)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_R)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_L)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_1) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_2) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_P)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_A)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_K) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_E) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_D) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_F) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_J) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_5) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_C) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_M) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_8) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_S) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_7) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_6) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_I) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_4) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_W) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_Y) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_U) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_G) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_T) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_B) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_R) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_L) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_1)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_2)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_Period) \ + OP(XKB_KEY_1, Key_Equals) \ + OP(XKB_KEY_2, Key_Minus) \ + OP(XKB_KEY_3, Key_0) \ + OP(XKB_KEY_4, Key_9) \ + OP(XKB_KEY_5, Key_LeftBracket) \ + OP(XKB_KEY_6, Key_P) \ + OP(XKB_KEY_7, Key_Quote) \ + OP(XKB_KEY_8, Key_Semicolon) \ + OP(XKB_KEY_9, Key_Slash) \ + OP(XKB_KEY_A, LSHIFT(Key_K)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_E)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_D)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_F)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_J)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_5)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_C)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_M)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_8)) \ + OP(XKB_KEY_K, LSHIFT(Key_S)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_7)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_6)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_I)) \ + OP(XKB_KEY_P, LSHIFT(Key_4)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_W)) \ + OP(XKB_KEY_R, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_U)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_G)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_T)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_B)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_R)) \ + OP(XKB_KEY_Z, LSHIFT(Key_L)) \ + OP(XKB_KEY_a, Key_K) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_apostrophe, Key_Z) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_P)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_at, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_b, Key_E) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_1)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_2)) \ + OP(XKB_KEY_bracketleft, Key_1) \ + OP(XKB_KEY_bracketright, Key_2) \ + OP(XKB_KEY_c, Key_D) \ + OP(XKB_KEY_colon, LSHIFT(Key_Q)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_F) \ + OP(XKB_KEY_dollar, LSHIFT(Key_9)) \ + OP(XKB_KEY_e, Key_J) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_exclam, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_f, Key_5) \ + OP(XKB_KEY_g, Key_C) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_O)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_M) \ + OP(XKB_KEY_j, Key_8) \ + OP(XKB_KEY_k, Key_S) \ + OP(XKB_KEY_l, Key_7) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_6) \ + OP(XKB_KEY_minus, Key_A) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_0)) \ + OP(XKB_KEY_o, Key_I) \ + OP(XKB_KEY_p, Key_4) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_Period)) \ + OP(XKB_KEY_percent, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_period, Key_O) \ + OP(XKB_KEY_plus, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_q, Key_W) \ + OP(XKB_KEY_question, LSHIFT(Key_3)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Z)) \ + OP(XKB_KEY_r, Key_Y) \ + OP(XKB_KEY_s, Key_U) \ + OP(XKB_KEY_semicolon, Key_Q) \ + OP(XKB_KEY_slash, Key_3) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_G) \ + OP(XKB_KEY_u, Key_T) \ + OP(XKB_KEY_underscore, LSHIFT(Key_A)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_B) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_R) \ + OP(XKB_KEY_z, Key_L) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace dvorak_l { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak_l +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/dvorak-r/keymap.h b/src/kaleidoscope/host_keymap/linux/us/dvorak-r/keymap.h new file mode 100644 index 0000000000..0789cfc1fa --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/dvorak-r/keymap.h @@ -0,0 +1,439 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: dvorak-r + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Slash)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_Q)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_A)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Slash) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_Z)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_X)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_V) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_R) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_0) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_X) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_Q) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_W) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_A) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_S) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_Z) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_LeftBracket)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_LeftBracket) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_R)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_0)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_F)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_P)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_L)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_K)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_G)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_8)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_Period)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_B)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_5)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_Semicolon)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_6)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_7)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_T)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_9)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_E)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_Y)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_U)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_J)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Comma)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_M)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_C)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_O)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_D)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_W)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_F) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_P) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_L) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_K) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_G) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_8) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_Period) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_B) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_5) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_Semicolon) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_6) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_7) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_T) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_9) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_E) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_Y) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_U) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_J) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Comma) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_M) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_C) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_O) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_D) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Slash)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_Q)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_A)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Slash) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_Z)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_X)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_V) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_R) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_0) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_X) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_Q) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_W) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_A) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_S) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_Z) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_LeftBracket)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_LeftBracket) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_R)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_0)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_F)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_P)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_L)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_K)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_G)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_8)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_Period)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_B)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_5)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_Semicolon)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_6)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_7)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_T)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_9)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_E)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_Y)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_U)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_J)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Comma)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_M)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_C)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_O)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_D)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_W)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_F) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_P) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_L) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_K) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_G) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_8) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_Period) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_B) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_5) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_Semicolon) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_6) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_7) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_T) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_9) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_E) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_Y) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_U) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_J) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Comma) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_M) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_C) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_O) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_D) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_X) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_Q) \ + OP(XKB_KEY_6, Key_W) \ + OP(XKB_KEY_7, Key_A) \ + OP(XKB_KEY_8, Key_S) \ + OP(XKB_KEY_9, Key_Z) \ + OP(XKB_KEY_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_P)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_L)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_K)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_G)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_8)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_Period)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_5)) \ + OP(XKB_KEY_K, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_6)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_7)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_T)) \ + OP(XKB_KEY_P, LSHIFT(Key_9)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_E)) \ + OP(XKB_KEY_R, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_U)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_J)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_I)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_W, LSHIFT(Key_M)) \ + OP(XKB_KEY_X, LSHIFT(Key_C)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_O)) \ + OP(XKB_KEY_Z, LSHIFT(Key_D)) \ + OP(XKB_KEY_a, Key_F) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_A)) \ + OP(XKB_KEY_apostrophe, Key_Slash) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_W)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_S)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_P) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, Key_Minus) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_c, Key_L) \ + OP(XKB_KEY_colon, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_comma, Key_V) \ + OP(XKB_KEY_d, Key_K) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_G) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_8) \ + OP(XKB_KEY_g, Key_Period) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_R)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_B) \ + OP(XKB_KEY_j, Key_5) \ + OP(XKB_KEY_k, Key_Semicolon) \ + OP(XKB_KEY_l, Key_6) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_7) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_T) \ + OP(XKB_KEY_p, Key_9) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_Z)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_X)) \ + OP(XKB_KEY_percent, LSHIFT(Key_Q)) \ + OP(XKB_KEY_period, Key_R) \ + OP(XKB_KEY_plus, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_q, Key_E) \ + OP(XKB_KEY_question, LSHIFT(Key_0)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_r, Key_Y) \ + OP(XKB_KEY_s, Key_U) \ + OP(XKB_KEY_semicolon, Key_LeftBracket) \ + OP(XKB_KEY_slash, Key_0) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_J) \ + OP(XKB_KEY_u, Key_I) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_Comma) \ + OP(XKB_KEY_w, Key_M) \ + OP(XKB_KEY_x, Key_C) \ + OP(XKB_KEY_y, Key_O) \ + OP(XKB_KEY_z, Key_D) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace dvorak_r { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak_r +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/dvorak/keymap.h b/src/kaleidoscope/host_keymap/linux/us/dvorak/keymap.h new file mode 100644 index 0000000000..65fa4b918f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/dvorak/keymap.h @@ -0,0 +1,439 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: dvorak + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Q)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Q) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Z)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Z) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_RightBracket) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_Minus) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_Equals) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_Minus)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_Equals)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Q) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_bracketleft, Key_Minus) \ + OP(XKB_KEY_bracketright, Key_Equals) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_colon, LSHIFT(Key_Z)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_equal, Key_RightBracket) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_plus, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Q)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_semicolon, Key_Z) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace dvorak { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvorak +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/dvp/keymap.h b/src/kaleidoscope/host_keymap/linux/us/dvp/keymap.h new file mode 100644 index 0000000000..7d34832e1f --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/dvp/keymap.h @@ -0,0 +1,439 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: dvp + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', Key_Minus) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Z)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', Key_Equals) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', Key_Backtick) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_1)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Z) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', Key_8) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_7) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP('+', Key_9) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_7)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', LSHIFT(Key_5)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', LSHIFT(Key_8)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', LSHIFT(Key_4)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', LSHIFT(Key_9)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', LSHIFT(Key_3)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', LSHIFT(Key_0)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', LSHIFT(Key_2)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', LSHIFT(Key_Minus)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', LSHIFT(Key_6)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Q) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_6) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', Key_RightBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_2) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_0) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', Key_3) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', Key_4) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', Key_Minus) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Z)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', Key_Equals) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', Key_Backtick) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_1)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', Key_1) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Z) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', Key_5) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', Key_8) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_7) /* U+002a, XKB_KEY_asterisk, ASTERISK */ \ + OP(L'+', Key_9) /* U+002b, XKB_KEY_plus, PLUS SIGN */ \ + OP(L',', Key_W) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Quote) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_E) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_LeftBracket) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_7)) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', LSHIFT(Key_5)) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', LSHIFT(Key_8)) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', LSHIFT(Key_4)) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', LSHIFT(Key_9)) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', LSHIFT(Key_3)) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', LSHIFT(Key_0)) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', LSHIFT(Key_2)) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', LSHIFT(Key_Minus)) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', LSHIFT(Key_6)) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Q)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Q) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_6) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_E)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_LeftBracket)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', Key_RightBracket) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_N)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_I)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_H)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_Y)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_U)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_J)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_G)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_C)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_V)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_P)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_L)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_S)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_R)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_X)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_O)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_Semicolon)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_K)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_F)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_Period)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_Comma)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_B)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_T)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Slash)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_2) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_0) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_RightBracket)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Quote)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', LSHIFT(Key_Equals)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_N) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_I) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_H) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_Y) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_U) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_J) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_G) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_C) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_V) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_P) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_L) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_S) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_R) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_X) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_O) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_Semicolon) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_K) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_F) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_Period) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_Comma) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_B) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_T) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Slash) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', Key_3) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', Key_4) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, LSHIFT(Key_7)) \ + OP(XKB_KEY_1, LSHIFT(Key_5)) \ + OP(XKB_KEY_2, LSHIFT(Key_8)) \ + OP(XKB_KEY_3, LSHIFT(Key_4)) \ + OP(XKB_KEY_4, LSHIFT(Key_9)) \ + OP(XKB_KEY_5, LSHIFT(Key_3)) \ + OP(XKB_KEY_6, LSHIFT(Key_0)) \ + OP(XKB_KEY_7, LSHIFT(Key_2)) \ + OP(XKB_KEY_8, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_9, LSHIFT(Key_6)) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_N)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_I)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_H)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_Y)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_U)) \ + OP(XKB_KEY_H, LSHIFT(Key_J)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_G)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_C)) \ + OP(XKB_KEY_K, LSHIFT(Key_V)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_P)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_L)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_S)) \ + OP(XKB_KEY_P, LSHIFT(Key_R)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_X)) \ + OP(XKB_KEY_R, LSHIFT(Key_O)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_K)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_F)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_Period)) \ + OP(XKB_KEY_W, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_X, LSHIFT(Key_B)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_T)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, Key_1) \ + OP(XKB_KEY_apostrophe, Key_Z) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, Key_7) \ + OP(XKB_KEY_at, Key_RightBracket) \ + OP(XKB_KEY_b, Key_N) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, Key_3) \ + OP(XKB_KEY_braceright, Key_4) \ + OP(XKB_KEY_bracketleft, Key_2) \ + OP(XKB_KEY_bracketright, Key_0) \ + OP(XKB_KEY_c, Key_I) \ + OP(XKB_KEY_colon, LSHIFT(Key_Q)) \ + OP(XKB_KEY_comma, Key_W) \ + OP(XKB_KEY_d, Key_H) \ + OP(XKB_KEY_dollar, Key_Backtick) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_equal, Key_6) \ + OP(XKB_KEY_exclam, Key_Minus) \ + OP(XKB_KEY_f, Key_Y) \ + OP(XKB_KEY_g, Key_U) \ + OP(XKB_KEY_grave, LSHIFT(Key_Equals)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_E)) \ + OP(XKB_KEY_h, Key_J) \ + OP(XKB_KEY_i, Key_G) \ + OP(XKB_KEY_j, Key_C) \ + OP(XKB_KEY_k, Key_V) \ + OP(XKB_KEY_l, Key_P) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Quote) \ + OP(XKB_KEY_n, Key_L) \ + OP(XKB_KEY_numbersign, Key_Equals) \ + OP(XKB_KEY_o, Key_S) \ + OP(XKB_KEY_p, Key_R) \ + OP(XKB_KEY_parenleft, Key_5) \ + OP(XKB_KEY_parenright, Key_8) \ + OP(XKB_KEY_percent, LSHIFT(Key_1)) \ + OP(XKB_KEY_period, Key_E) \ + OP(XKB_KEY_plus, Key_9) \ + OP(XKB_KEY_q, Key_X) \ + OP(XKB_KEY_question, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Z)) \ + OP(XKB_KEY_r, Key_O) \ + OP(XKB_KEY_s, Key_Semicolon) \ + OP(XKB_KEY_semicolon, Key_Q) \ + OP(XKB_KEY_slash, Key_LeftBracket) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_K) \ + OP(XKB_KEY_u, Key_F) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_v, Key_Period) \ + OP(XKB_KEY_w, Key_Comma) \ + OP(XKB_KEY_x, Key_B) \ + OP(XKB_KEY_y, Key_T) \ + OP(XKB_KEY_z, Key_Slash) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace dvp { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace dvp +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/euro/keymap.h b/src/kaleidoscope/host_keymap/linux/us/euro/keymap.h new file mode 100644 index 0000000000..eb668561b6 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/euro/keymap.h @@ -0,0 +1,442 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: euro + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace euro { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace euro +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/hbs/keymap.h b/src/kaleidoscope/host_keymap/linux/us/hbs/keymap.h new file mode 100644 index 0000000000..b3ecaa1fb4 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/hbs/keymap.h @@ -0,0 +1,473 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: hbs + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L' ', RALT(Key_Spacebar)) /* U+00a0, XKB_KEY_nobreakspace, NO-BREAK SPACE */ \ + OP(L'¢', RALT(LSHIFT(Key_E))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'«', RALT(LSHIFT(Key_Period))) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'»', RALT(LSHIFT(Key_Comma))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'×', RALT(Key_8)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'÷', RALT(LSHIFT(Key_8))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'Đ', RALT(LSHIFT(Key_D))) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', RALT(Key_D)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Dž', RALT(LSHIFT(Key_Z))) \ + OP(L'dž', RALT(Key_Z)) \ + OP(L'Lj', RALT(LSHIFT(Key_L))) \ + OP(L'lj', RALT(Key_L)) \ + OP(L'Nj', RALT(LSHIFT(Key_N))) \ + OP(L'nj', RALT(Key_N)) \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Minus))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'…', RALT(Key_Period)) /* U+2026, XKB_KEY_ellipsis, HORIZONTAL ELLIPSIS */ \ + OP(L'€', RALT(Key_E)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'〃', RALT(Key_Comma)) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_E)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, RALT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_caron, LSHIFT(Key_6)) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_dstroke, RALT(Key_D)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_ellipsis, RALT(Key_Period)) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(Key_8)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_nobreakspace, RALT(Key_Spacebar)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace hbs { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace hbs +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/ibm238l/keymap.h b/src/kaleidoscope/host_keymap/linux/us/ibm238l/keymap.h new file mode 100644 index 0000000000..e3aed1ade7 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/ibm238l/keymap.h @@ -0,0 +1,439 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: ibm238l + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_Backtick) /* U+003c, XKB_KEY_leftcaret, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Backtick)) /* U+003e, XKB_KEY_rightcaret, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_NonUsPound) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_Backtick) /* U+003c, XKB_KEY_leftcaret, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Backtick)) /* U+003e, XKB_KEY_rightcaret, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsBackslashAndPipe) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_NonUsPound) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_NonUsPound)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_NonUsPound) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftcaret, Key_Backtick) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rightcaret, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace ibm238l { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace ibm238l +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/intl-unicode/keymap.h b/src/kaleidoscope/host_keymap/linux/us/intl-unicode/keymap.h new file mode 100644 index 0000000000..05913feb78 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/intl-unicode/keymap.h @@ -0,0 +1,567 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: intl-unicode + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_C))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_4))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_Minus)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsPound))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_LeftBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_NonUsPound)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_6)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_7)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_8)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(Key_Slash)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_A))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(LSHIFT(Key_Q))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', RALT(LSHIFT(Key_W))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Z))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'É', RALT(LSHIFT(Key_E))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(LSHIFT(Key_I))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ó', RALT(LSHIFT(Key_O))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', RALT(LSHIFT(Key_P))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'Ø', RALT(LSHIFT(Key_L))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', RALT(LSHIFT(Key_U))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', RALT(LSHIFT(Key_Y))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', RALT(Key_A)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_Q)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', RALT(Key_W)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_Z)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'é', RALT(Key_E)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', RALT(Key_I)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ó', RALT(Key_O)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', RALT(Key_P)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'ø', RALT(Key_L)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ú', RALT(Key_U)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', RALT(Key_Y)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Œ', RALT(LSHIFT(Key_K))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_K)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'̀', RALT(Key_Backtick)) \ + OP(L'́', RALT(Key_Quote)) \ + OP(L'̂', RALT(LSHIFT(Key_6))) \ + OP(L'̃', RALT(LSHIFT(Key_Backtick))) \ + OP(L'̄', RALT(LSHIFT(Key_3))) \ + OP(L'̆', RALT(LSHIFT(Key_9))) \ + OP(L'̇', RALT(Key_Period)) \ + OP(L'̈', RALT(LSHIFT(Key_Semicolon))) \ + OP(L'̉', RALT(LSHIFT(Key_Slash))) \ + OP(L'̊', RALT(LSHIFT(Key_0))) \ + OP(L'̋', RALT(Key_Equals)) \ + OP(L'̌', RALT(LSHIFT(Key_Comma))) \ + OP(L'̛', RALT(LSHIFT(Key_7))) \ + OP(L'̣', RALT(LSHIFT(Key_Minus))) \ + OP(L'̧', RALT(Key_Comma)) \ + OP(L'̨', RALT(Key_Semicolon)) \ + OP(L'‘', RALT(Key_9)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_0)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_LeftBracket))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_RightBracket))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_A)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_Q)) \ + OP(XKB_KEY_ae, RALT(Key_Z)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_W)) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, RALT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_5))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, RALT(Key_E)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_9)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, RALT(Key_O)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_P)) \ + OP(XKB_KEY_oe, RALT(Key_K)) \ + OP(XKB_KEY_onehalf, RALT(Key_7)) \ + OP(XKB_KEY_onequarter, RALT(Key_6)) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_oslash, RALT(Key_L)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_0)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threequarters, RALT(Key_8)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, RALT(Key_U)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_Y)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_Minus)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace intl_unicode { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace intl_unicode +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/intl/keymap.h b/src/kaleidoscope/host_keymap/linux/us/intl/keymap.h new file mode 100644 index 0000000000..86c28f3476 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/intl/keymap.h @@ -0,0 +1,578 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: intl + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_6))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_6))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_C))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_4))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_Minus)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsPound))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_LeftBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_NonUsPound)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_Semicolon))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_Semicolon)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_6)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_7)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_8)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(Key_Slash)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_A))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(LSHIFT(Key_Q))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', RALT(LSHIFT(Key_W))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Z))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_Comma))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'É', RALT(LSHIFT(Key_E))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(LSHIFT(Key_I))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ó', RALT(LSHIFT(Key_O))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', RALT(LSHIFT(Key_P))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Equals)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_L))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', RALT(LSHIFT(Key_U))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', RALT(LSHIFT(Key_Y))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', RALT(Key_A)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_Q)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', RALT(Key_W)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_Z)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_Comma)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', RALT(Key_E)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', RALT(Key_I)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ó', RALT(Key_O)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', RALT(Key_P)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Equals))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_L)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ú', RALT(Key_U)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', RALT(Key_Y)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Œ', RALT(LSHIFT(Key_K))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_K)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'‘', RALT(Key_9)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_0)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_LeftBracket))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_RightBracket))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_A)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_Q)) \ + OP(XKB_KEY_ae, RALT(Key_Z)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_W)) \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_Comma)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, RALT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Period)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(LSHIFT(Key_Minus))) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_9))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_5))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_Quote)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_2))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_Backtick) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_eacute, RALT(Key_E)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_9)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(Key_Equals)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, RALT(Key_O)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_P)) \ + OP(XKB_KEY_oe, RALT(Key_K)) \ + OP(XKB_KEY_onehalf, RALT(Key_7)) \ + OP(XKB_KEY_onequarter, RALT(Key_6)) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_oslash, RALT(Key_L)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_Semicolon)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_0)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threequarters, RALT(Key_8)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, RALT(Key_U)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_Y)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_Minus)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace intl { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace intl +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/mac/keymap.h b/src/kaleidoscope/host_keymap/linux/us/mac/keymap.h new file mode 100644 index 0000000000..1d242b484b --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/mac/keymap.h @@ -0,0 +1,595 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: mac + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_4)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(Key_Y)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'§', Key_NonUsBackslashAndPipe) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'¨', RALT(LSHIFT(Key_U))) /* U+00a8, XKB_KEY_diaeresis, DIAERESIS */ \ + OP(L'©', RALT(Key_G)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(Key_9)) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_NonUsPound)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_L)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_8))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', LSHIFT(Key_NonUsBackslashAndPipe)) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'´', RALT(LSHIFT(Key_E))) /* U+00b4, XKB_KEY_acute, ACUTE ACCENT */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_7)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'·', RALT(LSHIFT(Key_9))) /* U+00b7, XKB_KEY_periodcentered, MIDDLE DOT */ \ + OP(L'º', RALT(Key_0)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(LSHIFT(Key_NonUsPound))) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(LSHIFT(Key_Y))) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(LSHIFT(Key_J))) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(LSHIFT(Key_M))) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(LSHIFT(Key_Slash))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Å', RALT(LSHIFT(Key_A))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Quote))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ø', RALT(LSHIFT(Key_O))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_L))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'å', RALT(Key_A)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_Quote)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(LSHIFT(Key_D))) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'÷', RALT(Key_Slash)) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_O)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(LSHIFT(Key_Semicolon))) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'ı', RALT(LSHIFT(Key_B))) /* U+0131, XKB_KEY_idotless, LATIN SMALL LETTER DOTLESS I */ \ + OP(L'Œ', RALT(LSHIFT(Key_Q))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_Q)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'ƒ', RALT(Key_F)) /* U+0192, XKB_KEY_function, LATIN SMALL LETTER F WITH HOOK */ \ + OP(L'ˆ', RALT(LSHIFT(Key_I))) \ + OP(L'˜', RALT(LSHIFT(Key_N))) \ + OP(L'Ω', RALT(Key_Z)) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'π', RALT(Key_P)) /* U+03c0, XKB_KEY_Greek_pi, GREEK SMALL LETTER PI */ \ + OP(L'–', RALT(Key_Minus)) /* U+2013, XKB_KEY_endash, EN DASH */ \ + OP(L'—', RALT(LSHIFT(Key_Minus))) /* U+2014, XKB_KEY_emdash, EM DASH */ \ + OP(L'‘', RALT(Key_RightBracket)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_RightBracket))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'‚', RALT(LSHIFT(Key_0))) /* U+201a, XKB_KEY_singlelowquotemark, SINGLE LOW-9 QUOTATION MARK */ \ + OP(L'“', RALT(Key_LeftBracket)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_LeftBracket))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'„', RALT(LSHIFT(Key_W))) /* U+201e, XKB_KEY_doublelowquotemark, DOUBLE LOW-9 QUOTATION MARK */ \ + OP(L'†', RALT(Key_T)) /* U+2020, XKB_KEY_dagger, DAGGER */ \ + OP(L'‡', RALT(LSHIFT(Key_7))) /* U+2021, XKB_KEY_doubledagger, DOUBLE DAGGER */ \ + OP(L'•', RALT(Key_8)) /* U+2022, XKB_KEY_enfilledcircbullet, BULLET */ \ + OP(L'…', RALT(Key_Semicolon)) \ + OP(L'‰', RALT(LSHIFT(Key_R))) \ + OP(L'‹', RALT(LSHIFT(Key_3))) \ + OP(L'›', RALT(LSHIFT(Key_4))) \ + OP(L'⁄', RALT(LSHIFT(Key_1))) \ + OP(L'€', RALT(LSHIFT(Key_2))) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(Key_2)) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'∂', RALT(Key_D)) /* U+2202, XKB_KEY_partialderivative, PARTIAL DIFFERENTIAL */ \ + OP(L'∆', RALT(Key_J)) \ + OP(L'∏', RALT(LSHIFT(Key_P))) \ + OP(L'∑', RALT(Key_W)) \ + OP(L'√', RALT(Key_V)) /* U+221a, XKB_KEY_squareroot, SQUARE ROOT */ \ + OP(L'∞', RALT(Key_5)) /* U+221e, XKB_KEY_infinity, INFINITY */ \ + OP(L'∫', RALT(Key_B)) /* U+222b, XKB_KEY_integral, INTEGRAL */ \ + OP(L'≈', RALT(Key_X)) /* U+2248, XKB_KEY_approxeq, ALMOST EQUAL TO */ \ + OP(L'≠', RALT(Key_Equals)) /* U+2260, XKB_KEY_notequal, NOT EQUAL TO */ \ + OP(L'≤', RALT(Key_Comma)) /* U+2264, XKB_KEY_lessthanequal, LESS-THAN OR EQUAL TO */ \ + OP(L'≥', RALT(Key_Period)) /* U+2265, XKB_KEY_greaterthanequal, GREATER-THAN OR EQUAL TO */ \ + OP(L'◊', RALT(LSHIFT(Key_V))) \ + OP(L'', RALT(LSHIFT(Key_K))) \ + OP(L'fi', RALT(LSHIFT(Key_5))) \ + OP(L'fl', RALT(LSHIFT(Key_6))) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(Key_Z)) \ + OP(XKB_KEY_Greek_pi, RALT(Key_P)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_L))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_acute, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_ae, RALT(Key_Quote)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_approxeq, RALT(Key_X)) \ + OP(XKB_KEY_aring, RALT(Key_A)) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_cent, RALT(Key_4)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_G)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dagger, RALT(Key_T)) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_H)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(Key_K)) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_E)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(LSHIFT(Key_H))) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_T))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_Z))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_I)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_U)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_G))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_Backtick)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_F))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_Comma))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_X))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_stroke, RALT(LSHIFT(Key_S))) /* XKB_KEY_dead_stroke */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_N)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_diaeresis, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_division, RALT(Key_Slash)) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_doubledagger, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_doublelowquotemark, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_emdash, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_endash, RALT(Key_Minus)) \ + OP(XKB_KEY_enfilledcircbullet, RALT(Key_8)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(LSHIFT(Key_D))) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_function, RALT(Key_F)) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_greaterthanequal, RALT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_guillemotright, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idotless, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_infinity, RALT(Key_5)) \ + OP(XKB_KEY_integral, RALT(Key_B)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_RightBracket)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_lessthanequal, RALT(Key_Comma)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(Key_0)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notequal, RALT(Key_Equals)) \ + OP(XKB_KEY_notsign, RALT(Key_L)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oe, RALT(Key_Q)) \ + OP(XKB_KEY_onehalf, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_onequarter, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_ordfeminine, RALT(Key_9)) \ + OP(XKB_KEY_oslash, RALT(Key_O)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_7)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_partialderivative, RALT(Key_D)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_periodcentered, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, LSHIFT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Slash))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_singlelowquotemark, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_squareroot, RALT(Key_V)) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_threequarters, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_trademark, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_Y)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace mac { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace mac +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/norman/keymap.h b/src/kaleidoscope/host_keymap/linux/us/norman/keymap.h new file mode 100644 index 0000000000..2bb95bb2b2 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/norman/keymap.h @@ -0,0 +1,439 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: norman + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_E)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_R)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_Semicolon)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_K)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_Y)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_T)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_O)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_L)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_N)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_I)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_H)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_E) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_R) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_Semicolon) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_K) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_Y) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_T) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_O) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_L) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_N) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_I) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_H) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_E)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_D)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_R)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_Semicolon)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_K)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_Y)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_T)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_O)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_L)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_N)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_I)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_H)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_E) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_D) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_R) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_Semicolon) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_K) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_Y) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_T) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_O) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_L) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_N) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_I) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_H) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_E)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_D)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_R)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_K)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_Y)) \ + OP(XKB_KEY_K, LSHIFT(Key_T)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_O)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_J)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_L)) \ + OP(XKB_KEY_P, LSHIFT(Key_N)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_I)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_F)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_H)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_P)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_E) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_D) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_R) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_Semicolon) \ + OP(XKB_KEY_i, Key_K) \ + OP(XKB_KEY_j, Key_Y) \ + OP(XKB_KEY_k, Key_T) \ + OP(XKB_KEY_l, Key_O) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_J) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_L) \ + OP(XKB_KEY_p, Key_N) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_I) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_P) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_F) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_H) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace norman { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace norman +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/olpc2/keymap.h b/src/kaleidoscope/host_keymap/linux/us/olpc2/keymap.h new file mode 100644 index 0000000000..44e0a89f96 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/olpc2/keymap.h @@ -0,0 +1,520 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: olpc2 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'£', RALT(Key_H)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_Quote)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(Key_NonUsPound)) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_Semicolon))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Comma)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_2)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'º', RALT(Key_Semicolon)) /* U+00ba, XKB_KEY_masculine, MASCULINE ORDINAL INDICATOR */ \ + OP(L'»', RALT(Key_Period)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(Key_Slash)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Æ', RALT(LSHIFT(Key_A))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_C))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Ð', RALT(LSHIFT(Key_D))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ø', RALT(LSHIFT(Key_W))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Þ', RALT(LSHIFT(Key_F))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'æ', RALT(Key_A)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_C)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'ð', RALT(Key_D)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ø', RALT(Key_W)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'þ', RALT(Key_F)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Œ', RALT(LSHIFT(Key_E))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_E)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'̀', RALT(Key_3)) \ + OP(L'́', RALT(Key_4)) \ + OP(L'̂', RALT(Key_7)) \ + OP(L'̃', RALT(Key_Equals)) \ + OP(L'̄', RALT(Key_Minus)) \ + OP(L'̆', RALT(Key_5)) \ + OP(L'̇', RALT(Key_9)) \ + OP(L'̈', RALT(Key_0)) \ + OP(L'̊', RALT(Key_6)) \ + OP(L'̌', RALT(Key_8)) \ + OP(L'̣', RALT(Key_O)) \ + OP(L'̤', RALT(Key_P)) \ + OP(L'̥', RALT(Key_Y)) \ + OP(L'̧', RALT(Key_R)) \ + OP(L'̬', RALT(Key_I)) \ + OP(L'̭', RALT(Key_U)) \ + OP(L'̮', RALT(Key_T)) \ + OP(L'̰', RALT(Key_RightBracket)) \ + OP(L'̱', RALT(Key_LeftBracket)) \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'ω', RALT(Key_Q)) /* U+03c9, XKB_KEY_Greek_omega, GREEK SMALL LETTER OMEGA */ \ + OP(L'ẜ', RALT(LSHIFT(Key_S))) \ + OP(L'€', RALT(Key_J)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_D))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_J)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Greek_omega, RALT(Key_Q)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_F))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ae, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_currency, RALT(Key_Quote)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_grave, RALT(Key_Backtick)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_tilde, RALT(LSHIFT(Key_Backtick))) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_D)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Comma)) \ + OP(XKB_KEY_guillemotright, RALT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_masculine, RALT(Key_Semicolon)) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_2)) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oe, RALT(Key_E)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_oslash, RALT(Key_W)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(Key_H)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_F)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace olpc2 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace olpc2 +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/rus/keymap.h b/src/kaleidoscope/host_keymap/linux/us/rus/keymap.h new file mode 100644 index 0000000000..8e8e8e00d2 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/rus/keymap.h @@ -0,0 +1,416 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: rus + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', RALT(LSHIFT(Key_Semicolon))) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', RALT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', RALT(LSHIFT(Key_Semicolon))) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', RALT(Key_Semicolon)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', RALT(Key_Equals)) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'[', RALT(Key_LeftBracket)) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', RALT(Key_NonUsPound)) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', RALT(Key_RightBracket)) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'{', RALT(LSHIFT(Key_LeftBracket))) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', RALT(Key_NonUsBackslashAndPipe)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(LSHIFT(Key_RightBracket))) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Ё', LSHIFT(Key_Backtick)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'А', LSHIFT(Key_A)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_B)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_W)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_G)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_D)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_E)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_V)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_Z)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_I)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_J)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_K)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_L)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_M)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_N)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_O)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_P)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_R)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_S)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_T)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_U)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_F)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_H)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_C)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_Semicolon)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_LeftBracket)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Щ', LSHIFT(Key_RightBracket)) /* U+0429, XKB_KEY_Cyrillic_SHCHA, CYRILLIC CAPITAL LETTER SHCHA */ \ + OP(L'Ъ', LSHIFT(Key_Equals)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ы', LSHIFT(Key_Y)) /* U+042b, XKB_KEY_Cyrillic_YERU, CYRILLIC CAPITAL LETTER YERU */ \ + OP(L'Ь', LSHIFT(Key_X)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_NonUsPound)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Quote)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Q)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_A) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_B) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_W) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_G) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_D) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_E) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_V) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_Z) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_I) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_J) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_K) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_L) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_M) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_N) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_O) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_P) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_R) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_S) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_T) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_U) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_F) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_H) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_C) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_Semicolon) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_LeftBracket) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'щ', Key_RightBracket) /* U+0449, XKB_KEY_Cyrillic_shcha, CYRILLIC SMALL LETTER SHCHA */ \ + OP(L'ъ', Key_Equals) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ы', Key_Y) /* U+044b, XKB_KEY_Cyrillic_yeru, CYRILLIC SMALL LETTER YERU */ \ + OP(L'ь', Key_X) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_NonUsPound) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Quote) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Q) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Backtick) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_SHCHA, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_YERU, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_a, Key_A) \ + OP(XKB_KEY_Cyrillic_be, Key_B) \ + OP(XKB_KEY_Cyrillic_che, Key_Semicolon) \ + OP(XKB_KEY_Cyrillic_de, Key_D) \ + OP(XKB_KEY_Cyrillic_e, Key_NonUsPound) \ + OP(XKB_KEY_Cyrillic_ef, Key_F) \ + OP(XKB_KEY_Cyrillic_el, Key_L) \ + OP(XKB_KEY_Cyrillic_em, Key_M) \ + OP(XKB_KEY_Cyrillic_en, Key_N) \ + OP(XKB_KEY_Cyrillic_er, Key_R) \ + OP(XKB_KEY_Cyrillic_es, Key_S) \ + OP(XKB_KEY_Cyrillic_ghe, Key_G) \ + OP(XKB_KEY_Cyrillic_ha, Key_H) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_Equals) \ + OP(XKB_KEY_Cyrillic_i, Key_I) \ + OP(XKB_KEY_Cyrillic_ie, Key_E) \ + OP(XKB_KEY_Cyrillic_io, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ka, Key_K) \ + OP(XKB_KEY_Cyrillic_o, Key_O) \ + OP(XKB_KEY_Cyrillic_pe, Key_P) \ + OP(XKB_KEY_Cyrillic_sha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_shcha, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_shorti, Key_J) \ + OP(XKB_KEY_Cyrillic_softsign, Key_X) \ + OP(XKB_KEY_Cyrillic_te, Key_T) \ + OP(XKB_KEY_Cyrillic_tse, Key_C) \ + OP(XKB_KEY_Cyrillic_u, Key_U) \ + OP(XKB_KEY_Cyrillic_ve, Key_W) \ + OP(XKB_KEY_Cyrillic_ya, Key_Q) \ + OP(XKB_KEY_Cyrillic_yeru, Key_Y) \ + OP(XKB_KEY_Cyrillic_yu, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ze, Key_Z) \ + OP(XKB_KEY_Cyrillic_zhe, Key_V) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_backslash, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_bar, RALT(Key_NonUsBackslashAndPipe)) \ + OP(XKB_KEY_braceleft, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_braceright, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_bracketleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_bracketright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_colon, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_equal, RALT(Key_Equals)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_semicolon, RALT(Key_Semicolon)) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace rus { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace rus +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/scn/keymap.h b/src/kaleidoscope/host_keymap/linux/us/scn/keymap.h new file mode 100644 index 0000000000..877fcafa91 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/scn/keymap.h @@ -0,0 +1,582 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: scn + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_6))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_6))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_C))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_4))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_Minus)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsPound))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_C)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_LeftBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_NonUsPound)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_R)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_Semicolon))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_M)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_Semicolon)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_6)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_7)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_8)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(Key_Slash)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_A))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(LSHIFT(Key_Q))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', RALT(LSHIFT(Key_W))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Z))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_Comma))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'Í', RALT(LSHIFT(Key_I))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ñ', RALT(LSHIFT(Key_N))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ó', RALT(LSHIFT(Key_O))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', RALT(LSHIFT(Key_P))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Equals)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_L))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', RALT(LSHIFT(Key_U))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', RALT(LSHIFT(Key_Y))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_T))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', RALT(Key_A)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_Q)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', RALT(Key_W)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_Z)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_Comma)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'í', RALT(Key_I)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ñ', RALT(Key_N)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ó', RALT(Key_O)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', RALT(Key_P)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Equals))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_L)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ú', RALT(Key_U)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', RALT(Key_Y)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_T)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Đ', RALT(LSHIFT(Key_F))) \ + OP(L'đ', RALT(Key_F)) \ + OP(L'Œ', RALT(LSHIFT(Key_K))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_K)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'Ə', RALT(LSHIFT(Key_E))) /* U+018f, XKB_KEY_SCHWA, LATIN CAPITAL LETTER SCHWA */ \ + OP(L'ə', RALT(Key_E)) /* U+0259, XKB_KEY_schwa, LATIN SMALL LETTER SCHWA */ \ + OP(L'Χ', RALT(LSHIFT(Key_X))) \ + OP(L'χ', RALT(Key_X)) \ + OP(L'ᵘ', RALT(Key_Period)) \ + OP(L'Ḍ', RALT(LSHIFT(Key_D))) \ + OP(L'ḍ', RALT(Key_D)) \ + OP(L'Ḥ', RALT(LSHIFT(Key_H))) \ + OP(L'ḥ', RALT(Key_H)) \ + OP(L'‘', RALT(Key_9)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_0)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_LeftBracket))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_RightBracket))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_SCHWA, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_T))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_A)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_Q)) \ + OP(XKB_KEY_ae, RALT(Key_Z)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_W)) \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_ccedilla, RALT(Key_Comma)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_C)) \ + OP(XKB_KEY_currency, RALT(Key_4)) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(LSHIFT(Key_Minus))) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_9))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_5))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_Quote)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_2))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_Backtick) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_iacute, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_9)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_M)) \ + OP(XKB_KEY_multiply, RALT(Key_Equals)) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_ntilde, RALT(Key_N)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_oacute, RALT(Key_O)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_P)) \ + OP(XKB_KEY_oe, RALT(Key_K)) \ + OP(XKB_KEY_onehalf, RALT(Key_7)) \ + OP(XKB_KEY_onequarter, RALT(Key_6)) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_oslash, RALT(Key_L)) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_paragraph, RALT(Key_Semicolon)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_registered, RALT(Key_R)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_0)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_schwa, RALT(Key_E)) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_thorn, RALT(Key_T)) \ + OP(XKB_KEY_threequarters, RALT(Key_8)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uacute, RALT(Key_U)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_Y)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_Minus)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace scn { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace scn +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/sun_type6/keymap.h b/src/kaleidoscope/host_keymap/linux/us/sun_type6/keymap.h new file mode 100644 index 0000000000..89ac9a923d --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/sun_type6/keymap.h @@ -0,0 +1,442 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: sun_type6 + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'€', RALT(Key_4)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_4)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Multi_key, Key_PcApplication) /* XKB_KEY_Multi_key, Multi-key character compose */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace sun_type6 { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace sun_type6 +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/workman-intl/keymap.h b/src/kaleidoscope/host_keymap/linux/us/workman-intl/keymap.h new file mode 100644 index 0000000000..11e9bd1a19 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/workman-intl/keymap.h @@ -0,0 +1,577 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: workman-intl + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_T)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_V)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_W)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_U)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_D)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_Semicolon)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_Y)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_M)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_C)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_L)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_O)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_E)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_B)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_R)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_H)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', RALT(LSHIFT(Key_6))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_T) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_V) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_W) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_U) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_D) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_Semicolon) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_Y) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_M) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_C) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_L) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_O) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_E) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_B) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_R) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_H) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', RALT(LSHIFT(Key_Quote))) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', RALT(Key_Quote)) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', LSHIFT(Key_Comma)) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_T)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_V)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_W)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_U)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_D)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_Semicolon)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_Y)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_M)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_C)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_L)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_O)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_E)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_B)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_R)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_H)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', RALT(LSHIFT(Key_6))) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', RALT(Key_Backtick)) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_T) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_V) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_W) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_U) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_D) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_Semicolon) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_Y) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_M) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_C) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_L) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_O) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_E) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_B) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_R) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_H) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', RALT(LSHIFT(Key_Backtick))) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(Key_1)) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(LSHIFT(Key_V))) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(LSHIFT(Key_4))) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¤', RALT(Key_4)) /* U+00a4, XKB_KEY_currency, CURRENCY SIGN */ \ + OP(L'¥', RALT(Key_Minus)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsPound))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'§', RALT(LSHIFT(Key_S))) /* U+00a7, XKB_KEY_section, SECTION SIGN */ \ + OP(L'©', RALT(Key_V)) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'«', RALT(Key_LeftBracket)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(Key_NonUsPound)) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'®', RALT(Key_E)) /* U+00ae, XKB_KEY_registered, REGISTERED SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_P))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'²', RALT(Key_2)) /* U+00b2, XKB_KEY_twosuperior, SUPERSCRIPT TWO */ \ + OP(L'³', RALT(Key_3)) /* U+00b3, XKB_KEY_threesuperior, SUPERSCRIPT THREE */ \ + OP(L'µ', RALT(Key_C)) /* U+00b5, XKB_KEY_mu, MICRO SIGN */ \ + OP(L'¶', RALT(Key_P)) /* U+00b6, XKB_KEY_paragraph, PILCROW SIGN */ \ + OP(L'¹', RALT(LSHIFT(Key_1))) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_RightBracket)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¼', RALT(Key_6)) /* U+00bc, XKB_KEY_onequarter, VULGAR FRACTION ONE QUARTER */ \ + OP(L'½', RALT(Key_7)) /* U+00bd, XKB_KEY_onehalf, VULGAR FRACTION ONE HALF */ \ + OP(L'¾', RALT(Key_8)) /* U+00be, XKB_KEY_threequarters, VULGAR FRACTION THREE QUARTERS */ \ + OP(L'¿', RALT(Key_Slash)) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Á', RALT(LSHIFT(Key_A))) /* U+00c1, XKB_KEY_Aacute, LATIN CAPITAL LETTER A WITH ACUTE */ \ + OP(L'Ä', RALT(LSHIFT(Key_Q))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Å', RALT(LSHIFT(Key_R))) /* U+00c5, XKB_KEY_Aring, LATIN CAPITAL LETTER A WITH RING ABOVE */ \ + OP(L'Æ', RALT(LSHIFT(Key_Z))) /* U+00c6, XKB_KEY_AE, LATIN CAPITAL LETTER AE */ \ + OP(L'Ç', RALT(LSHIFT(Key_Comma))) /* U+00c7, XKB_KEY_Ccedilla, LATIN CAPITAL LETTER C WITH CEDILLA */ \ + OP(L'É', RALT(LSHIFT(Key_K))) /* U+00c9, XKB_KEY_Eacute, LATIN CAPITAL LETTER E WITH ACUTE */ \ + OP(L'Í', RALT(LSHIFT(Key_Semicolon))) /* U+00cd, XKB_KEY_Iacute, LATIN CAPITAL LETTER I WITH ACUTE */ \ + OP(L'Ð', RALT(LSHIFT(Key_W))) /* U+00d0, XKB_KEY_ETH, LATIN CAPITAL LETTER ETH */ \ + OP(L'Ñ', RALT(LSHIFT(Key_J))) /* U+00d1, XKB_KEY_Ntilde, LATIN CAPITAL LETTER N WITH TILDE */ \ + OP(L'Ó', RALT(LSHIFT(Key_L))) /* U+00d3, XKB_KEY_Oacute, LATIN CAPITAL LETTER O WITH ACUTE */ \ + OP(L'Ö', RALT(LSHIFT(Key_O))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(Key_Equals)) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Ø', RALT(LSHIFT(Key_M))) /* U+00d8, XKB_KEY_Oslash, LATIN CAPITAL LETTER O WITH STROKE */ \ + OP(L'Ú', RALT(LSHIFT(Key_I))) /* U+00da, XKB_KEY_Uacute, LATIN CAPITAL LETTER U WITH ACUTE */ \ + OP(L'Ü', RALT(LSHIFT(Key_H))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'Þ', RALT(LSHIFT(Key_F))) /* U+00de, XKB_KEY_THORN, LATIN CAPITAL LETTER THORN */ \ + OP(L'ß', RALT(Key_S)) /* U+00df, XKB_KEY_ssharp, LATIN SMALL LETTER SHARP S */ \ + OP(L'á', RALT(Key_A)) /* U+00e1, XKB_KEY_aacute, LATIN SMALL LETTER A WITH ACUTE */ \ + OP(L'ä', RALT(Key_Q)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'å', RALT(Key_R)) /* U+00e5, XKB_KEY_aring, LATIN SMALL LETTER A WITH RING ABOVE */ \ + OP(L'æ', RALT(Key_Z)) /* U+00e6, XKB_KEY_ae, LATIN SMALL LETTER AE */ \ + OP(L'ç', RALT(Key_Comma)) /* U+00e7, XKB_KEY_ccedilla, LATIN SMALL LETTER C WITH CEDILLA */ \ + OP(L'é', RALT(Key_K)) /* U+00e9, XKB_KEY_eacute, LATIN SMALL LETTER E WITH ACUTE */ \ + OP(L'í', RALT(Key_Semicolon)) /* U+00ed, XKB_KEY_iacute, LATIN SMALL LETTER I WITH ACUTE */ \ + OP(L'ð', RALT(Key_W)) /* U+00f0, XKB_KEY_eth, LATIN SMALL LETTER ETH */ \ + OP(L'ñ', RALT(Key_J)) /* U+00f1, XKB_KEY_ntilde, LATIN SMALL LETTER N WITH TILDE */ \ + OP(L'ó', RALT(Key_L)) /* U+00f3, XKB_KEY_oacute, LATIN SMALL LETTER O WITH ACUTE */ \ + OP(L'ö', RALT(Key_O)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Equals))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'ø', RALT(Key_M)) /* U+00f8, XKB_KEY_oslash, LATIN SMALL LETTER O WITH STROKE */ \ + OP(L'ú', RALT(Key_I)) /* U+00fa, XKB_KEY_uacute, LATIN SMALL LETTER U WITH ACUTE */ \ + OP(L'ü', RALT(Key_H)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'þ', RALT(Key_F)) /* U+00fe, XKB_KEY_thorn, LATIN SMALL LETTER THORN */ \ + OP(L'Œ', RALT(LSHIFT(Key_N))) /* U+0152, XKB_KEY_OE, LATIN CAPITAL LIGATURE OE */ \ + OP(L'œ', RALT(Key_N)) /* U+0153, XKB_KEY_oe, LATIN SMALL LIGATURE OE */ \ + OP(L'‘', RALT(Key_9)) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(Key_0)) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(LSHIFT(Key_LeftBracket))) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(LSHIFT(Key_RightBracket))) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_AE, RALT(LSHIFT(Key_Z))) \ + OP(XKB_KEY_Aacute, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Aring, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_B, LSHIFT(Key_T)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_V)) \ + OP(XKB_KEY_Ccedilla, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_W)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_K)) \ + OP(XKB_KEY_ETH, RALT(LSHIFT(Key_W))) /* XKB_KEY_Eth, deprecated */ \ + OP(XKB_KEY_Eacute, RALT(LSHIFT(Key_K))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_U)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_D)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Iacute, RALT(LSHIFT(Key_Semicolon))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_Y)) \ + OP(XKB_KEY_K, LSHIFT(Key_N)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_M)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_C)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_J)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Ntilde, RALT(LSHIFT(Key_J))) \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_L)) \ + OP(XKB_KEY_OE, RALT(LSHIFT(Key_N))) \ + OP(XKB_KEY_Oacute, RALT(LSHIFT(Key_L))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_Oslash, RALT(LSHIFT(Key_M))) \ + OP(XKB_KEY_P, LSHIFT(Key_O)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_E)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_F)) \ + OP(XKB_KEY_THORN, RALT(LSHIFT(Key_F))) /* XKB_KEY_Thorn, deprecated */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_I)) \ + OP(XKB_KEY_Uacute, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_B)) \ + OP(XKB_KEY_W, LSHIFT(Key_R)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_H)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_aacute, RALT(Key_A)) \ + OP(XKB_KEY_adiaeresis, RALT(Key_Q)) \ + OP(XKB_KEY_ae, RALT(Key_Z)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, RALT(Key_Quote)) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_aring, RALT(Key_R)) \ + OP(XKB_KEY_asciicircum, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_asciitilde, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_T) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsPound))) \ + OP(XKB_KEY_c, Key_V) \ + OP(XKB_KEY_ccedilla, RALT(Key_Comma)) \ + OP(XKB_KEY_cent, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_colon, LSHIFT(Key_P)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(Key_V)) \ + OP(XKB_KEY_currency, RALT(Key_4)) \ + OP(XKB_KEY_d, Key_W) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Period)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_0))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, Key_Quote) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(LSHIFT(Key_Minus))) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_9))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Period))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(LSHIFT(Key_5))) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, LSHIFT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, LSHIFT(Key_Quote)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_2))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, Key_Backtick) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(LSHIFT(Key_Slash))) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_7))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_3))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_8))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, LSHIFT(Key_Backtick)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Equals))) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_K) \ + OP(XKB_KEY_eacute, RALT(Key_K)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_eth, RALT(Key_W)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(Key_1)) \ + OP(XKB_KEY_f, Key_U) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, RALT(Key_Backtick)) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_LeftBracket)) \ + OP(XKB_KEY_guillemotright, RALT(Key_RightBracket)) \ + OP(XKB_KEY_h, Key_D) \ + OP(XKB_KEY_i, Key_Semicolon) \ + OP(XKB_KEY_iacute, RALT(Key_Semicolon)) \ + OP(XKB_KEY_j, Key_Y) \ + OP(XKB_KEY_k, Key_N) \ + OP(XKB_KEY_l, Key_M) \ + OP(XKB_KEY_leftdoublequotemark, RALT(LSHIFT(Key_LeftBracket))) \ + OP(XKB_KEY_leftsinglequotemark, RALT(Key_9)) \ + OP(XKB_KEY_less, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_m, Key_C) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_mu, RALT(Key_C)) \ + OP(XKB_KEY_multiply, RALT(Key_Equals)) \ + OP(XKB_KEY_n, Key_J) \ + OP(XKB_KEY_notsign, RALT(Key_NonUsPound)) \ + OP(XKB_KEY_ntilde, RALT(Key_J)) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_L) \ + OP(XKB_KEY_oacute, RALT(Key_L)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_O)) \ + OP(XKB_KEY_oe, RALT(Key_N)) \ + OP(XKB_KEY_onehalf, RALT(Key_7)) \ + OP(XKB_KEY_onequarter, RALT(Key_6)) \ + OP(XKB_KEY_onesuperior, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_oslash, RALT(Key_M)) \ + OP(XKB_KEY_p, Key_O) \ + OP(XKB_KEY_paragraph, RALT(Key_P)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, RALT(LSHIFT(Key_Quote))) \ + OP(XKB_KEY_r, Key_E) \ + OP(XKB_KEY_registered, RALT(Key_E)) \ + OP(XKB_KEY_rightdoublequotemark, RALT(LSHIFT(Key_RightBracket))) \ + OP(XKB_KEY_rightsinglequotemark, RALT(Key_0)) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_section, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_semicolon, Key_P) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_ssharp, RALT(Key_S)) \ + OP(XKB_KEY_sterling, RALT(LSHIFT(Key_4))) \ + OP(XKB_KEY_t, Key_F) \ + OP(XKB_KEY_thorn, RALT(Key_F)) \ + OP(XKB_KEY_threequarters, RALT(Key_8)) \ + OP(XKB_KEY_threesuperior, RALT(Key_3)) \ + OP(XKB_KEY_twosuperior, RALT(Key_2)) \ + OP(XKB_KEY_u, Key_I) \ + OP(XKB_KEY_uacute, RALT(Key_I)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_H)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_B) \ + OP(XKB_KEY_w, Key_R) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_H) \ + OP(XKB_KEY_yen, RALT(Key_Minus)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace workman_intl { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace workman_intl +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/us/workman/keymap.h b/src/kaleidoscope/host_keymap/linux/us/workman/keymap.h new file mode 100644 index 0000000000..4f7ae95674 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/us/workman/keymap.h @@ -0,0 +1,439 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: us +// variant: workman + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_T)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_V)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_W)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_U)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_D)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_Semicolon)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_Y)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_M)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_C)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_L)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_O)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_E)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_B)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_R)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_H)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_T) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_V) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_W) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_U) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_D) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_Semicolon) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_Y) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_M) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_C) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_L) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_O) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_E) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_B) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_R) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_H) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_P)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_P) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_T)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_V)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_W)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_K)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_U)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_D)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_Semicolon)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_Y)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_N)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_M)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_C)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_J)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_L)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_O)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_E)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_F)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_I)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_B)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_R)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_H)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_T) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_V) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_W) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_K) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_U) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_D) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_Semicolon) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_Y) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_N) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_M) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_C) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_J) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_L) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_O) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_E) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_F) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_I) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_B) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_R) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_H) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_T)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_V)) \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_W)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_K)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_U)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_D)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_Y)) \ + OP(XKB_KEY_K, LSHIFT(Key_N)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_M)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_C)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_J)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_L)) \ + OP(XKB_KEY_P, LSHIFT(Key_O)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_E)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_F)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_I)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_B)) \ + OP(XKB_KEY_W, LSHIFT(Key_R)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_H)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_T) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_V) \ + OP(XKB_KEY_colon, LSHIFT(Key_P)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_W) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_K) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_U) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_D) \ + OP(XKB_KEY_i, Key_Semicolon) \ + OP(XKB_KEY_j, Key_Y) \ + OP(XKB_KEY_k, Key_N) \ + OP(XKB_KEY_l, Key_M) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_C) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_J) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_L) \ + OP(XKB_KEY_p, Key_O) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_E) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_P) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_F) \ + OP(XKB_KEY_u, Key_I) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_B) \ + OP(XKB_KEY_w, Key_R) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_H) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace us { +namespace workman { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace workman +} // namespace us +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/uz/latin/keymap.h b/src/kaleidoscope/host_keymap/linux/uz/latin/keymap.h new file mode 100644 index 0000000000..930af18737 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/uz/latin/keymap.h @@ -0,0 +1,437 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: uz +// variant: latin + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', LSHIFT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', LSHIFT(Key_LeftBracket)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', LSHIFT(Key_RightBracket)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'ʻ', Key_Quote) \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_braceright, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dollar, LSHIFT(Key_4)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace uz { +namespace latin { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace latin +} // namespace uz +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/uz/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/uz/standard/keymap.h new file mode 100644 index 0000000000..16e992d69e --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/uz/standard/keymap.h @@ -0,0 +1,375 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: uz +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP('.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_2)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', LSHIFT(Key_Slash)) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(L'.', Key_Slash) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_NonUsBackslashAndPipe) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_6)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', LSHIFT(Key_4)) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'?', LSHIFT(Key_7)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'Ё', LSHIFT(Key_Backtick)) /* U+0401, XKB_KEY_Cyrillic_IO, CYRILLIC CAPITAL LETTER IO */ \ + OP(L'Ў', LSHIFT(Key_O)) /* U+040e, XKB_KEY_Byelorussian_SHORTU, CYRILLIC CAPITAL LETTER SHORT U */ \ + OP(L'А', LSHIFT(Key_F)) /* U+0410, XKB_KEY_Cyrillic_A, CYRILLIC CAPITAL LETTER A */ \ + OP(L'Б', LSHIFT(Key_Comma)) /* U+0411, XKB_KEY_Cyrillic_BE, CYRILLIC CAPITAL LETTER BE */ \ + OP(L'В', LSHIFT(Key_D)) /* U+0412, XKB_KEY_Cyrillic_VE, CYRILLIC CAPITAL LETTER VE */ \ + OP(L'Г', LSHIFT(Key_U)) /* U+0413, XKB_KEY_Cyrillic_GHE, CYRILLIC CAPITAL LETTER GHE */ \ + OP(L'Д', LSHIFT(Key_L)) /* U+0414, XKB_KEY_Cyrillic_DE, CYRILLIC CAPITAL LETTER DE */ \ + OP(L'Е', LSHIFT(Key_T)) /* U+0415, XKB_KEY_Cyrillic_IE, CYRILLIC CAPITAL LETTER IE */ \ + OP(L'Ж', LSHIFT(Key_Semicolon)) /* U+0416, XKB_KEY_Cyrillic_ZHE, CYRILLIC CAPITAL LETTER ZHE */ \ + OP(L'З', LSHIFT(Key_P)) /* U+0417, XKB_KEY_Cyrillic_ZE, CYRILLIC CAPITAL LETTER ZE */ \ + OP(L'И', LSHIFT(Key_B)) /* U+0418, XKB_KEY_Cyrillic_I, CYRILLIC CAPITAL LETTER I */ \ + OP(L'Й', LSHIFT(Key_Q)) /* U+0419, XKB_KEY_Cyrillic_SHORTI, CYRILLIC CAPITAL LETTER SHORT I */ \ + OP(L'К', LSHIFT(Key_R)) /* U+041a, XKB_KEY_Cyrillic_KA, CYRILLIC CAPITAL LETTER KA */ \ + OP(L'Л', LSHIFT(Key_K)) /* U+041b, XKB_KEY_Cyrillic_EL, CYRILLIC CAPITAL LETTER EL */ \ + OP(L'М', LSHIFT(Key_V)) /* U+041c, XKB_KEY_Cyrillic_EM, CYRILLIC CAPITAL LETTER EM */ \ + OP(L'Н', LSHIFT(Key_Y)) /* U+041d, XKB_KEY_Cyrillic_EN, CYRILLIC CAPITAL LETTER EN */ \ + OP(L'О', LSHIFT(Key_J)) /* U+041e, XKB_KEY_Cyrillic_O, CYRILLIC CAPITAL LETTER O */ \ + OP(L'П', LSHIFT(Key_G)) /* U+041f, XKB_KEY_Cyrillic_PE, CYRILLIC CAPITAL LETTER PE */ \ + OP(L'Р', LSHIFT(Key_H)) /* U+0420, XKB_KEY_Cyrillic_ER, CYRILLIC CAPITAL LETTER ER */ \ + OP(L'С', LSHIFT(Key_C)) /* U+0421, XKB_KEY_Cyrillic_ES, CYRILLIC CAPITAL LETTER ES */ \ + OP(L'Т', LSHIFT(Key_N)) /* U+0422, XKB_KEY_Cyrillic_TE, CYRILLIC CAPITAL LETTER TE */ \ + OP(L'У', LSHIFT(Key_E)) /* U+0423, XKB_KEY_Cyrillic_U, CYRILLIC CAPITAL LETTER U */ \ + OP(L'Ф', LSHIFT(Key_A)) /* U+0424, XKB_KEY_Cyrillic_EF, CYRILLIC CAPITAL LETTER EF */ \ + OP(L'Х', LSHIFT(Key_LeftBracket)) /* U+0425, XKB_KEY_Cyrillic_HA, CYRILLIC CAPITAL LETTER HA */ \ + OP(L'Ц', LSHIFT(Key_W)) /* U+0426, XKB_KEY_Cyrillic_TSE, CYRILLIC CAPITAL LETTER TSE */ \ + OP(L'Ч', LSHIFT(Key_X)) /* U+0427, XKB_KEY_Cyrillic_CHE, CYRILLIC CAPITAL LETTER CHE */ \ + OP(L'Ш', LSHIFT(Key_I)) /* U+0428, XKB_KEY_Cyrillic_SHA, CYRILLIC CAPITAL LETTER SHA */ \ + OP(L'Ъ', LSHIFT(Key_RightBracket)) /* U+042a, XKB_KEY_Cyrillic_HARDSIGN, CYRILLIC CAPITAL LETTER HARD SIGN */ \ + OP(L'Ь', LSHIFT(Key_M)) /* U+042c, XKB_KEY_Cyrillic_SOFTSIGN, CYRILLIC CAPITAL LETTER SOFT SIGN */ \ + OP(L'Э', LSHIFT(Key_Quote)) /* U+042d, XKB_KEY_Cyrillic_E, CYRILLIC CAPITAL LETTER E */ \ + OP(L'Ю', LSHIFT(Key_Period)) /* U+042e, XKB_KEY_Cyrillic_YU, CYRILLIC CAPITAL LETTER YU */ \ + OP(L'Я', LSHIFT(Key_Z)) /* U+042f, XKB_KEY_Cyrillic_YA, CYRILLIC CAPITAL LETTER YA */ \ + OP(L'а', Key_F) /* U+0430, XKB_KEY_Cyrillic_a, CYRILLIC SMALL LETTER A */ \ + OP(L'б', Key_Comma) /* U+0431, XKB_KEY_Cyrillic_be, CYRILLIC SMALL LETTER BE */ \ + OP(L'в', Key_D) /* U+0432, XKB_KEY_Cyrillic_ve, CYRILLIC SMALL LETTER VE */ \ + OP(L'г', Key_U) /* U+0433, XKB_KEY_Cyrillic_ghe, CYRILLIC SMALL LETTER GHE */ \ + OP(L'д', Key_L) /* U+0434, XKB_KEY_Cyrillic_de, CYRILLIC SMALL LETTER DE */ \ + OP(L'е', Key_T) /* U+0435, XKB_KEY_Cyrillic_ie, CYRILLIC SMALL LETTER IE */ \ + OP(L'ж', Key_Semicolon) /* U+0436, XKB_KEY_Cyrillic_zhe, CYRILLIC SMALL LETTER ZHE */ \ + OP(L'з', Key_P) /* U+0437, XKB_KEY_Cyrillic_ze, CYRILLIC SMALL LETTER ZE */ \ + OP(L'и', Key_B) /* U+0438, XKB_KEY_Cyrillic_i, CYRILLIC SMALL LETTER I */ \ + OP(L'й', Key_Q) /* U+0439, XKB_KEY_Cyrillic_shorti, CYRILLIC SMALL LETTER SHORT I */ \ + OP(L'к', Key_R) /* U+043a, XKB_KEY_Cyrillic_ka, CYRILLIC SMALL LETTER KA */ \ + OP(L'л', Key_K) /* U+043b, XKB_KEY_Cyrillic_el, CYRILLIC SMALL LETTER EL */ \ + OP(L'м', Key_V) /* U+043c, XKB_KEY_Cyrillic_em, CYRILLIC SMALL LETTER EM */ \ + OP(L'н', Key_Y) /* U+043d, XKB_KEY_Cyrillic_en, CYRILLIC SMALL LETTER EN */ \ + OP(L'о', Key_J) /* U+043e, XKB_KEY_Cyrillic_o, CYRILLIC SMALL LETTER O */ \ + OP(L'п', Key_G) /* U+043f, XKB_KEY_Cyrillic_pe, CYRILLIC SMALL LETTER PE */ \ + OP(L'р', Key_H) /* U+0440, XKB_KEY_Cyrillic_er, CYRILLIC SMALL LETTER ER */ \ + OP(L'с', Key_C) /* U+0441, XKB_KEY_Cyrillic_es, CYRILLIC SMALL LETTER ES */ \ + OP(L'т', Key_N) /* U+0442, XKB_KEY_Cyrillic_te, CYRILLIC SMALL LETTER TE */ \ + OP(L'у', Key_E) /* U+0443, XKB_KEY_Cyrillic_u, CYRILLIC SMALL LETTER U */ \ + OP(L'ф', Key_A) /* U+0444, XKB_KEY_Cyrillic_ef, CYRILLIC SMALL LETTER EF */ \ + OP(L'х', Key_LeftBracket) /* U+0445, XKB_KEY_Cyrillic_ha, CYRILLIC SMALL LETTER HA */ \ + OP(L'ц', Key_W) /* U+0446, XKB_KEY_Cyrillic_tse, CYRILLIC SMALL LETTER TSE */ \ + OP(L'ч', Key_X) /* U+0447, XKB_KEY_Cyrillic_che, CYRILLIC SMALL LETTER CHE */ \ + OP(L'ш', Key_I) /* U+0448, XKB_KEY_Cyrillic_sha, CYRILLIC SMALL LETTER SHA */ \ + OP(L'ъ', Key_RightBracket) /* U+044a, XKB_KEY_Cyrillic_hardsign, CYRILLIC SMALL LETTER HARD SIGN */ \ + OP(L'ь', Key_M) /* U+044c, XKB_KEY_Cyrillic_softsign, CYRILLIC SMALL LETTER SOFT SIGN */ \ + OP(L'э', Key_Quote) /* U+044d, XKB_KEY_Cyrillic_e, CYRILLIC SMALL LETTER E */ \ + OP(L'ю', Key_Period) /* U+044e, XKB_KEY_Cyrillic_yu, CYRILLIC SMALL LETTER YU */ \ + OP(L'я', Key_Z) /* U+044f, XKB_KEY_Cyrillic_ya, CYRILLIC SMALL LETTER YA */ \ + OP(L'ё', Key_Backtick) /* U+0451, XKB_KEY_Cyrillic_io, CYRILLIC SMALL LETTER IO */ \ + OP(L'ў', Key_O) /* U+045e, XKB_KEY_Byelorussian_shortu, CYRILLIC SMALL LETTER SHORT U */ \ + OP(L'Ғ', LSHIFT(Key_Minus)) /* U+0492, XKB_KEY_Cyrillic_GHE_bar, CYRILLIC CAPITAL LETTER GHE WITH STROKE */ \ + OP(L'ғ', Key_Minus) /* U+0493, XKB_KEY_Cyrillic_ghe_bar, CYRILLIC SMALL LETTER GHE WITH STROKE */ \ + OP(L'Қ', LSHIFT(Key_S)) /* U+049a, XKB_KEY_Cyrillic_KA_descender, CYRILLIC CAPITAL LETTER KA WITH DESCENDER */ \ + OP(L'қ', Key_S) /* U+049b, XKB_KEY_Cyrillic_ka_descender, CYRILLIC SMALL LETTER KA WITH DESCENDER */ \ + OP(L'Ҳ', LSHIFT(Key_Equals)) /* U+04b2, XKB_KEY_Cyrillic_HA_descender, CYRILLIC CAPITAL LETTER HA WITH DESCENDER */ \ + OP(L'ҳ', Key_Equals) /* U+04b3, XKB_KEY_Cyrillic_ha_descender, CYRILLIC SMALL LETTER HA WITH DESCENDER */ \ + OP(L'№', LSHIFT(Key_3)) /* U+2116, XKB_KEY_numerosign, NUMERO SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_Alt_R, Key_RightAlt) /* XKB_KEY_Alt_R, Right alt */ \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_Byelorussian_SHORTU, LSHIFT(Key_O)) \ + OP(XKB_KEY_Byelorussian_shortu, Key_O) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_Cyrillic_A, LSHIFT(Key_F)) \ + OP(XKB_KEY_Cyrillic_BE, LSHIFT(Key_Comma)) \ + OP(XKB_KEY_Cyrillic_CHE, LSHIFT(Key_X)) \ + OP(XKB_KEY_Cyrillic_DE, LSHIFT(Key_L)) \ + OP(XKB_KEY_Cyrillic_E, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_Cyrillic_EF, LSHIFT(Key_A)) \ + OP(XKB_KEY_Cyrillic_EL, LSHIFT(Key_K)) \ + OP(XKB_KEY_Cyrillic_EM, LSHIFT(Key_V)) \ + OP(XKB_KEY_Cyrillic_EN, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Cyrillic_ER, LSHIFT(Key_H)) \ + OP(XKB_KEY_Cyrillic_ES, LSHIFT(Key_C)) \ + OP(XKB_KEY_Cyrillic_GHE, LSHIFT(Key_U)) \ + OP(XKB_KEY_Cyrillic_GHE_bar, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_Cyrillic_HA, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Cyrillic_HARDSIGN, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_Cyrillic_HA_descender, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_Cyrillic_I, LSHIFT(Key_B)) \ + OP(XKB_KEY_Cyrillic_IE, LSHIFT(Key_T)) \ + OP(XKB_KEY_Cyrillic_IO, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_Cyrillic_KA, LSHIFT(Key_R)) \ + OP(XKB_KEY_Cyrillic_KA_descender, LSHIFT(Key_S)) \ + OP(XKB_KEY_Cyrillic_O, LSHIFT(Key_J)) \ + OP(XKB_KEY_Cyrillic_PE, LSHIFT(Key_G)) \ + OP(XKB_KEY_Cyrillic_SHA, LSHIFT(Key_I)) \ + OP(XKB_KEY_Cyrillic_SHORTI, LSHIFT(Key_Q)) \ + OP(XKB_KEY_Cyrillic_SOFTSIGN, LSHIFT(Key_M)) \ + OP(XKB_KEY_Cyrillic_TE, LSHIFT(Key_N)) \ + OP(XKB_KEY_Cyrillic_TSE, LSHIFT(Key_W)) \ + OP(XKB_KEY_Cyrillic_U, LSHIFT(Key_E)) \ + OP(XKB_KEY_Cyrillic_VE, LSHIFT(Key_D)) \ + OP(XKB_KEY_Cyrillic_YA, LSHIFT(Key_Z)) \ + OP(XKB_KEY_Cyrillic_YU, LSHIFT(Key_Period)) \ + OP(XKB_KEY_Cyrillic_ZE, LSHIFT(Key_P)) \ + OP(XKB_KEY_Cyrillic_ZHE, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_Cyrillic_a, Key_F) \ + OP(XKB_KEY_Cyrillic_be, Key_Comma) \ + OP(XKB_KEY_Cyrillic_che, Key_X) \ + OP(XKB_KEY_Cyrillic_de, Key_L) \ + OP(XKB_KEY_Cyrillic_e, Key_Quote) \ + OP(XKB_KEY_Cyrillic_ef, Key_A) \ + OP(XKB_KEY_Cyrillic_el, Key_K) \ + OP(XKB_KEY_Cyrillic_em, Key_V) \ + OP(XKB_KEY_Cyrillic_en, Key_Y) \ + OP(XKB_KEY_Cyrillic_er, Key_H) \ + OP(XKB_KEY_Cyrillic_es, Key_C) \ + OP(XKB_KEY_Cyrillic_ghe, Key_U) \ + OP(XKB_KEY_Cyrillic_ghe_bar, Key_Minus) \ + OP(XKB_KEY_Cyrillic_ha, Key_LeftBracket) \ + OP(XKB_KEY_Cyrillic_ha_descender, Key_Equals) \ + OP(XKB_KEY_Cyrillic_hardsign, Key_RightBracket) \ + OP(XKB_KEY_Cyrillic_i, Key_B) \ + OP(XKB_KEY_Cyrillic_ie, Key_T) \ + OP(XKB_KEY_Cyrillic_io, Key_Backtick) \ + OP(XKB_KEY_Cyrillic_ka, Key_R) \ + OP(XKB_KEY_Cyrillic_ka_descender, Key_S) \ + OP(XKB_KEY_Cyrillic_o, Key_J) \ + OP(XKB_KEY_Cyrillic_pe, Key_G) \ + OP(XKB_KEY_Cyrillic_sha, Key_I) \ + OP(XKB_KEY_Cyrillic_shorti, Key_Q) \ + OP(XKB_KEY_Cyrillic_softsign, Key_M) \ + OP(XKB_KEY_Cyrillic_te, Key_N) \ + OP(XKB_KEY_Cyrillic_tse, Key_W) \ + OP(XKB_KEY_Cyrillic_u, Key_E) \ + OP(XKB_KEY_Cyrillic_ve, Key_D) \ + OP(XKB_KEY_Cyrillic_ya, Key_Z) \ + OP(XKB_KEY_Cyrillic_yu, Key_Period) \ + OP(XKB_KEY_Cyrillic_ze, Key_P) \ + OP(XKB_KEY_Cyrillic_zhe, Key_Semicolon) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_Meta_R, LSHIFT(Key_RightAlt)) /* XKB_KEY_Meta_R, Right meta */ \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_colon, LSHIFT(Key_6)) \ + OP(XKB_KEY_comma, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_numerosign, LSHIFT(Key_3)) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Slash) \ + OP(XKB_KEY_question, LSHIFT(Key_7)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_2)) \ + OP(XKB_KEY_semicolon, LSHIFT(Key_4)) \ + OP(XKB_KEY_slash, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_space, Key_Spacebar) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace uz { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace uz +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/vn/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/vn/standard/keymap.h new file mode 100644 index 0000000000..d9e44da2a5 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/vn/standard/keymap.h @@ -0,0 +1,440 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: vn +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP('1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP('2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP('3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP('4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP('5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP('6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP('7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP('8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP('9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(L'1', LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(L'2', LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(L'3', LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(L'4', LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(L'5', LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(L'6', LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(L'7', LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(L'8', LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(L'9', LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'Â', LSHIFT(Key_2)) /* U+00c2, XKB_KEY_Acircumflex, LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ \ + OP(L'Ê', LSHIFT(Key_3)) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Ô', LSHIFT(Key_4)) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'â', Key_2) /* U+00e2, XKB_KEY_acircumflex, LATIN SMALL LETTER A WITH CIRCUMFLEX */ \ + OP(L'ê', Key_3) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'ô', Key_4) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ă', LSHIFT(Key_1)) /* U+0102, XKB_KEY_Abreve, LATIN CAPITAL LETTER A WITH BREVE */ \ + OP(L'ă', Key_1) /* U+0103, XKB_KEY_abreve, LATIN SMALL LETTER A WITH BREVE */ \ + OP(L'Đ', LSHIFT(Key_0)) /* U+0110, XKB_KEY_Dstroke, LATIN CAPITAL LETTER D WITH STROKE */ \ + OP(L'đ', Key_0) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ơ', LSHIFT(Key_RightBracket)) /* U+01a0, XKB_KEY_Ohorn, LATIN CAPITAL LETTER O WITH HORN */ \ + OP(L'ơ', Key_RightBracket) /* U+01a1, XKB_KEY_ohorn, LATIN SMALL LETTER O WITH HORN */ \ + OP(L'Ư', LSHIFT(Key_LeftBracket)) /* U+01af, XKB_KEY_Uhorn, LATIN CAPITAL LETTER U WITH HORN */ \ + OP(L'ư', Key_LeftBracket) /* U+01b0, XKB_KEY_uhorn, LATIN SMALL LETTER U WITH HORN */ \ + OP(L'̀', Key_5) \ + OP(L'́', Key_8) \ + OP(L'̃', Key_7) \ + OP(L'̉', Key_6) \ + OP(L'̣', Key_9) \ + OP(L'₫', Key_Equals) /* U+20ab, XKB_KEY_DongSign, DONG SIGN */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Abreve, LSHIFT(Key_1)) \ + OP(XKB_KEY_Acircumflex, LSHIFT(Key_2)) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_DongSign, Key_Equals) \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_Dstroke, LSHIFT(Key_0)) \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_Ecircumflex, LSHIFT(Key_3)) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Ocircumflex, LSHIFT(Key_4)) \ + OP(XKB_KEY_Ohorn, LSHIFT(Key_RightBracket)) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Uhorn, LSHIFT(Key_LeftBracket)) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_abreve, Key_1) \ + OP(XKB_KEY_acircumflex, Key_2) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_acute, RALT(Key_8)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_9)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_grave, RALT(Key_5)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_6)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_7)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_dstroke, Key_0) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_ecircumflex, Key_3) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, Key_4) \ + OP(XKB_KEY_ohorn, Key_RightBracket) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_uhorn, Key_LeftBracket) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace vn { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace vn +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE + diff --git a/src/kaleidoscope/host_keymap/linux/za/standard/keymap.h b/src/kaleidoscope/host_keymap/linux/za/standard/keymap.h new file mode 100644 index 0000000000..36b5cf0862 --- /dev/null +++ b/src/kaleidoscope/host_keymap/linux/za/standard/keymap.h @@ -0,0 +1,572 @@ +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2013-2019 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include "kaleidoscope/host_keymap/linux.h" + +// This file was autogenerated by host_keymap. +// Its content is based on information provided by the XKB X11 system +// collected with the extraordinary libxkbcommon. + +// layout: za +// variant: standard + +#define _HOST_KEYMAP_ASCII(OP) \ + OP('\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP('\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP('\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP('\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP('!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP('"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP('#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP('$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP('%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP('&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP('\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP('(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP('*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP('+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP('-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP('.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP('/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP('0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP('1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP('2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP('3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP('4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP('5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP('6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP('7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP('8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP('9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP('<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP('=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP('>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP('?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP('@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP('A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP('B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP('C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP('D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP('E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP('F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP('G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP('H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP('I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP('J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP('K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP('L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP('M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP('N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP('O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP('P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP('Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP('R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP('S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP('T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP('U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP('V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP('W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP('X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP('Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP('Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP('[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP('\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP('^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP('_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP('`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP('a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP('b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP('c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP('d', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP('e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP('f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP('g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP('h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP('i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP('j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP('k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP('l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP('m', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP('n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP('o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP('p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP('q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP('r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP('s', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP('t', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP('u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP('v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP('w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP('x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP('y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP('z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP('{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP('|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP('}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP('~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP('', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + +#define _HOST_KEYMAP_UNICODE(OP) \ + OP(L'\b', Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(L'\t', Key_Tab) /* XKB_KEY_Tab */ \ + OP(L'\r', Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(L'\e', Key_Escape) /* XKB_KEY_Escape */ \ + OP(L' ', Key_Spacebar) /* U+0020, XKB_KEY_space, SPACE */ \ + OP(L'!', LSHIFT(Key_1)) /* U+0021, XKB_KEY_exclam, EXCLAMATION MARK */ \ + OP(L'"', LSHIFT(Key_Quote)) /* U+0022, XKB_KEY_quotedbl, QUOTATION MARK */ \ + OP(L'#', LSHIFT(Key_3)) /* U+0023, XKB_KEY_numbersign, NUMBER SIGN */ \ + OP(L'$', RALT(Key_4)) /* U+0024, XKB_KEY_dollar, DOLLAR SIGN */ \ + OP(L'%', LSHIFT(Key_5)) /* U+0025, XKB_KEY_percent, PERCENT SIGN */ \ + OP(L'&', LSHIFT(Key_7)) /* U+0026, XKB_KEY_ampersand, AMPERSAND */ \ + OP(L'\'', Key_Quote) /* U+0027, XKB_KEY_apostrophe, APOSTROPHE */ \ + OP(L'(', LSHIFT(Key_9)) /* U+0028, XKB_KEY_parenleft, LEFT PARENTHESIS */ \ + OP(L')', LSHIFT(Key_0)) /* U+0029, XKB_KEY_parenright, RIGHT PARENTHESIS */ \ + OP(L'*', Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(L'+', Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(L',', Key_Comma) /* U+002c, XKB_KEY_comma, COMMA */ \ + OP(L'-', Key_Minus) /* U+002d, XKB_KEY_minus, HYPHEN-MINUS */ \ + OP(L'.', Key_Period) /* U+002e, XKB_KEY_period, FULL STOP */ \ + OP(L'/', Key_Slash) /* U+002f, XKB_KEY_slash, SOLIDUS */ \ + OP(L'0', Key_0) /* U+0030, XKB_KEY_0, DIGIT ZERO */ \ + OP(L'1', Key_1) /* U+0031, XKB_KEY_1, DIGIT ONE */ \ + OP(L'2', Key_2) /* U+0032, XKB_KEY_2, DIGIT TWO */ \ + OP(L'3', Key_3) /* U+0033, XKB_KEY_3, DIGIT THREE */ \ + OP(L'4', Key_4) /* U+0034, XKB_KEY_4, DIGIT FOUR */ \ + OP(L'5', Key_5) /* U+0035, XKB_KEY_5, DIGIT FIVE */ \ + OP(L'6', Key_6) /* U+0036, XKB_KEY_6, DIGIT SIX */ \ + OP(L'7', Key_7) /* U+0037, XKB_KEY_7, DIGIT SEVEN */ \ + OP(L'8', Key_8) /* U+0038, XKB_KEY_8, DIGIT EIGHT */ \ + OP(L'9', Key_9) /* U+0039, XKB_KEY_9, DIGIT NINE */ \ + OP(L':', LSHIFT(Key_Semicolon)) /* U+003a, XKB_KEY_colon, COLON */ \ + OP(L';', Key_Semicolon) /* U+003b, XKB_KEY_semicolon, SEMICOLON */ \ + OP(L'<', Key_NonUsBackslashAndPipe) /* U+003c, XKB_KEY_less, LESS-THAN SIGN */ \ + OP(L'=', Key_Equals) /* U+003d, XKB_KEY_equal, EQUALS SIGN */ \ + OP(L'>', LSHIFT(Key_Period)) /* U+003e, XKB_KEY_greater, GREATER-THAN SIGN */ \ + OP(L'?', LSHIFT(Key_Slash)) /* U+003f, XKB_KEY_question, QUESTION MARK */ \ + OP(L'@', LSHIFT(Key_2)) /* U+0040, XKB_KEY_at, COMMERCIAL AT */ \ + OP(L'A', LSHIFT(Key_A)) /* U+0041, XKB_KEY_A, LATIN CAPITAL LETTER A */ \ + OP(L'B', LSHIFT(Key_B)) /* U+0042, XKB_KEY_B, LATIN CAPITAL LETTER B */ \ + OP(L'C', LSHIFT(Key_C)) /* U+0043, XKB_KEY_C, LATIN CAPITAL LETTER C */ \ + OP(L'D', LSHIFT(Key_D)) /* U+0044, XKB_KEY_D, LATIN CAPITAL LETTER D */ \ + OP(L'E', LSHIFT(Key_E)) /* U+0045, XKB_KEY_E, LATIN CAPITAL LETTER E */ \ + OP(L'F', LSHIFT(Key_F)) /* U+0046, XKB_KEY_F, LATIN CAPITAL LETTER F */ \ + OP(L'G', LSHIFT(Key_G)) /* U+0047, XKB_KEY_G, LATIN CAPITAL LETTER G */ \ + OP(L'H', LSHIFT(Key_H)) /* U+0048, XKB_KEY_H, LATIN CAPITAL LETTER H */ \ + OP(L'I', LSHIFT(Key_I)) /* U+0049, XKB_KEY_I, LATIN CAPITAL LETTER I */ \ + OP(L'J', LSHIFT(Key_J)) /* U+004a, XKB_KEY_J, LATIN CAPITAL LETTER J */ \ + OP(L'K', LSHIFT(Key_K)) /* U+004b, XKB_KEY_K, LATIN CAPITAL LETTER K */ \ + OP(L'L', LSHIFT(Key_L)) /* U+004c, XKB_KEY_L, LATIN CAPITAL LETTER L */ \ + OP(L'M', LSHIFT(Key_M)) /* U+004d, XKB_KEY_M, LATIN CAPITAL LETTER M */ \ + OP(L'N', LSHIFT(Key_N)) /* U+004e, XKB_KEY_N, LATIN CAPITAL LETTER N */ \ + OP(L'O', LSHIFT(Key_O)) /* U+004f, XKB_KEY_O, LATIN CAPITAL LETTER O */ \ + OP(L'P', LSHIFT(Key_P)) /* U+0050, XKB_KEY_P, LATIN CAPITAL LETTER P */ \ + OP(L'Q', LSHIFT(Key_Q)) /* U+0051, XKB_KEY_Q, LATIN CAPITAL LETTER Q */ \ + OP(L'R', LSHIFT(Key_R)) /* U+0052, XKB_KEY_R, LATIN CAPITAL LETTER R */ \ + OP(L'S', LSHIFT(Key_S)) /* U+0053, XKB_KEY_S, LATIN CAPITAL LETTER S */ \ + OP(L'T', LSHIFT(Key_T)) /* U+0054, XKB_KEY_T, LATIN CAPITAL LETTER T */ \ + OP(L'U', LSHIFT(Key_U)) /* U+0055, XKB_KEY_U, LATIN CAPITAL LETTER U */ \ + OP(L'V', LSHIFT(Key_V)) /* U+0056, XKB_KEY_V, LATIN CAPITAL LETTER V */ \ + OP(L'W', LSHIFT(Key_W)) /* U+0057, XKB_KEY_W, LATIN CAPITAL LETTER W */ \ + OP(L'X', LSHIFT(Key_X)) /* U+0058, XKB_KEY_X, LATIN CAPITAL LETTER X */ \ + OP(L'Y', LSHIFT(Key_Y)) /* U+0059, XKB_KEY_Y, LATIN CAPITAL LETTER Y */ \ + OP(L'Z', LSHIFT(Key_Z)) /* U+005a, XKB_KEY_Z, LATIN CAPITAL LETTER Z */ \ + OP(L'[', Key_LeftBracket) /* U+005b, XKB_KEY_bracketleft, LEFT SQUARE BRACKET */ \ + OP(L'\\', Key_NonUsPound) /* U+005c, XKB_KEY_backslash, REVERSE SOLIDUS */ \ + OP(L']', Key_RightBracket) /* U+005d, XKB_KEY_bracketright, RIGHT SQUARE BRACKET */ \ + OP(L'^', LSHIFT(Key_6)) /* U+005e, XKB_KEY_asciicircum, CIRCUMFLEX ACCENT */ \ + OP(L'_', LSHIFT(Key_Minus)) /* U+005f, XKB_KEY_underscore, LOW LINE */ \ + OP(L'`', Key_Backtick) /* U+0060, XKB_KEY_grave, GRAVE ACCENT */ \ + OP(L'a', Key_A) /* U+0061, XKB_KEY_a, LATIN SMALL LETTER A */ \ + OP(L'b', Key_B) /* U+0062, XKB_KEY_b, LATIN SMALL LETTER B */ \ + OP(L'c', Key_C) /* U+0063, XKB_KEY_c, LATIN SMALL LETTER C */ \ + OP(L'd', Key_D) /* U+0064, XKB_KEY_d, LATIN SMALL LETTER D */ \ + OP(L'e', Key_E) /* U+0065, XKB_KEY_e, LATIN SMALL LETTER E */ \ + OP(L'f', Key_F) /* U+0066, XKB_KEY_f, LATIN SMALL LETTER F */ \ + OP(L'g', Key_G) /* U+0067, XKB_KEY_g, LATIN SMALL LETTER G */ \ + OP(L'h', Key_H) /* U+0068, XKB_KEY_h, LATIN SMALL LETTER H */ \ + OP(L'i', Key_I) /* U+0069, XKB_KEY_i, LATIN SMALL LETTER I */ \ + OP(L'j', Key_J) /* U+006a, XKB_KEY_j, LATIN SMALL LETTER J */ \ + OP(L'k', Key_K) /* U+006b, XKB_KEY_k, LATIN SMALL LETTER K */ \ + OP(L'l', Key_L) /* U+006c, XKB_KEY_l, LATIN SMALL LETTER L */ \ + OP(L'm', Key_M) /* U+006d, XKB_KEY_m, LATIN SMALL LETTER M */ \ + OP(L'n', Key_N) /* U+006e, XKB_KEY_n, LATIN SMALL LETTER N */ \ + OP(L'o', Key_O) /* U+006f, XKB_KEY_o, LATIN SMALL LETTER O */ \ + OP(L'p', Key_P) /* U+0070, XKB_KEY_p, LATIN SMALL LETTER P */ \ + OP(L'q', Key_Q) /* U+0071, XKB_KEY_q, LATIN SMALL LETTER Q */ \ + OP(L'r', Key_R) /* U+0072, XKB_KEY_r, LATIN SMALL LETTER R */ \ + OP(L's', Key_S) /* U+0073, XKB_KEY_s, LATIN SMALL LETTER S */ \ + OP(L't', Key_T) /* U+0074, XKB_KEY_t, LATIN SMALL LETTER T */ \ + OP(L'u', Key_U) /* U+0075, XKB_KEY_u, LATIN SMALL LETTER U */ \ + OP(L'v', Key_V) /* U+0076, XKB_KEY_v, LATIN SMALL LETTER V */ \ + OP(L'w', Key_W) /* U+0077, XKB_KEY_w, LATIN SMALL LETTER W */ \ + OP(L'x', Key_X) /* U+0078, XKB_KEY_x, LATIN SMALL LETTER X */ \ + OP(L'y', Key_Y) /* U+0079, XKB_KEY_y, LATIN SMALL LETTER Y */ \ + OP(L'z', Key_Z) /* U+007a, XKB_KEY_z, LATIN SMALL LETTER Z */ \ + OP(L'{', RALT(Key_7)) /* U+007b, XKB_KEY_braceleft, LEFT CURLY BRACKET */ \ + OP(L'|', LSHIFT(Key_NonUsPound)) /* U+007c, XKB_KEY_bar, VERTICAL LINE */ \ + OP(L'}', RALT(Key_0)) /* U+007d, XKB_KEY_braceright, RIGHT CURLY BRACKET */ \ + OP(L'~', LSHIFT(Key_Backtick)) /* U+007e, XKB_KEY_asciitilde, TILDE */ \ + OP(L'', Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(L'¡', RALT(LSHIFT(Key_1))) /* U+00a1, XKB_KEY_exclamdown, INVERTED EXCLAMATION MARK */ \ + OP(L'¢', RALT(Key_C)) /* U+00a2, XKB_KEY_cent, CENT SIGN */ \ + OP(L'£', RALT(Key_3)) /* U+00a3, XKB_KEY_sterling, POUND SIGN */ \ + OP(L'¥', RALT(Key_2)) /* U+00a5, XKB_KEY_yen, YEN SIGN */ \ + OP(L'¦', RALT(LSHIFT(Key_NonUsBackslashAndPipe))) /* U+00a6, XKB_KEY_brokenbar, BROKEN BAR */ \ + OP(L'©', RALT(LSHIFT(Key_C))) /* U+00a9, XKB_KEY_copyright, COPYRIGHT SIGN */ \ + OP(L'ª', RALT(LSHIFT(Key_F))) /* U+00aa, XKB_KEY_ordfeminine, FEMININE ORDINAL INDICATOR */ \ + OP(L'«', RALT(Key_Z)) /* U+00ab, XKB_KEY_guillemotleft, LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¬', RALT(LSHIFT(Key_Backtick))) /* U+00ac, XKB_KEY_notsign, NOT SIGN */ \ + OP(L'°', RALT(LSHIFT(Key_0))) /* U+00b0, XKB_KEY_degree, DEGREE SIGN */ \ + OP(L'±', RALT(LSHIFT(Key_9))) /* U+00b1, XKB_KEY_plusminus, PLUS-MINUS SIGN */ \ + OP(L'¹', RALT(Key_1)) /* U+00b9, XKB_KEY_onesuperior, SUPERSCRIPT ONE */ \ + OP(L'»', RALT(Key_X)) /* U+00bb, XKB_KEY_guillemotright, RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ \ + OP(L'¿', RALT(LSHIFT(Key_Minus))) /* U+00bf, XKB_KEY_questiondown, INVERTED QUESTION MARK */ \ + OP(L'Ä', RALT(LSHIFT(Key_A))) /* U+00c4, XKB_KEY_Adiaeresis, LATIN CAPITAL LETTER A WITH DIAERESIS */ \ + OP(L'Ê', RALT(LSHIFT(Key_R))) /* U+00ca, XKB_KEY_Ecircumflex, LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ \ + OP(L'Ë', RALT(LSHIFT(Key_E))) /* U+00cb, XKB_KEY_Ediaeresis, LATIN CAPITAL LETTER E WITH DIAERESIS */ \ + OP(L'Ï', RALT(LSHIFT(Key_I))) /* U+00cf, XKB_KEY_Idiaeresis, LATIN CAPITAL LETTER I WITH DIAERESIS */ \ + OP(L'Ô', RALT(LSHIFT(Key_P))) /* U+00d4, XKB_KEY_Ocircumflex, LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ \ + OP(L'Ö', RALT(LSHIFT(Key_O))) /* U+00d6, XKB_KEY_Odiaeresis, LATIN CAPITAL LETTER O WITH DIAERESIS */ \ + OP(L'×', RALT(LSHIFT(Key_Comma))) /* U+00d7, XKB_KEY_multiply, MULTIPLICATION SIGN */ \ + OP(L'Û', RALT(LSHIFT(Key_Y))) /* U+00db, XKB_KEY_Ucircumflex, LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ \ + OP(L'Ü', RALT(LSHIFT(Key_U))) /* U+00dc, XKB_KEY_Udiaeresis, LATIN CAPITAL LETTER U WITH DIAERESIS */ \ + OP(L'ä', RALT(Key_A)) /* U+00e4, XKB_KEY_adiaeresis, LATIN SMALL LETTER A WITH DIAERESIS */ \ + OP(L'ê', RALT(Key_R)) /* U+00ea, XKB_KEY_ecircumflex, LATIN SMALL LETTER E WITH CIRCUMFLEX */ \ + OP(L'ë', RALT(Key_E)) /* U+00eb, XKB_KEY_ediaeresis, LATIN SMALL LETTER E WITH DIAERESIS */ \ + OP(L'ï', RALT(Key_I)) /* U+00ef, XKB_KEY_idiaeresis, LATIN SMALL LETTER I WITH DIAERESIS */ \ + OP(L'ô', RALT(Key_P)) /* U+00f4, XKB_KEY_ocircumflex, LATIN SMALL LETTER O WITH CIRCUMFLEX */ \ + OP(L'ö', RALT(Key_O)) /* U+00f6, XKB_KEY_odiaeresis, LATIN SMALL LETTER O WITH DIAERESIS */ \ + OP(L'÷', RALT(LSHIFT(Key_Period))) /* U+00f7, XKB_KEY_division, DIVISION SIGN */ \ + OP(L'û', RALT(Key_Y)) /* U+00fb, XKB_KEY_ucircumflex, LATIN SMALL LETTER U WITH CIRCUMFLEX */ \ + OP(L'ü', RALT(Key_U)) /* U+00fc, XKB_KEY_udiaeresis, LATIN SMALL LETTER U WITH DIAERESIS */ \ + OP(L'đ', RALT(Key_F)) /* U+0111, XKB_KEY_dstroke, LATIN SMALL LETTER D WITH STROKE */ \ + OP(L'Ħ', RALT(LSHIFT(Key_H))) /* U+0126, XKB_KEY_Hstroke, LATIN CAPITAL LETTER H WITH STROKE */ \ + OP(L'ħ', RALT(Key_H)) /* U+0127, XKB_KEY_hstroke, LATIN SMALL LETTER H WITH STROKE */ \ + OP(L'ĸ', RALT(Key_K)) /* U+0138, XKB_KEY_kra, LATIN SMALL LETTER KRA */ \ + OP(L'Ł', RALT(LSHIFT(Key_W))) /* U+0141, XKB_KEY_Lstroke, LATIN CAPITAL LETTER L WITH STROKE */ \ + OP(L'ł', RALT(Key_W)) /* U+0142, XKB_KEY_lstroke, LATIN SMALL LETTER L WITH STROKE */ \ + OP(L'Ŋ', RALT(LSHIFT(Key_G))) /* U+014a, XKB_KEY_ENG, LATIN CAPITAL LETTER ENG */ \ + OP(L'ŋ', RALT(Key_G)) /* U+014b, XKB_KEY_eng, LATIN SMALL LETTER ENG */ \ + OP(L'Š', RALT(LSHIFT(Key_S))) /* U+0160, XKB_KEY_Scaron, LATIN CAPITAL LETTER S WITH CARON */ \ + OP(L'š', RALT(Key_S)) /* U+0161, XKB_KEY_scaron, LATIN SMALL LETTER S WITH CARON */ \ + OP(L'Ω', RALT(LSHIFT(Key_Q))) /* U+03a9, XKB_KEY_Greek_OMEGA, GREEK CAPITAL LETTER OMEGA */ \ + OP(L'Ḓ', RALT(LSHIFT(Key_D))) \ + OP(L'ḓ', RALT(Key_D)) \ + OP(L'Ḽ', RALT(LSHIFT(Key_L))) \ + OP(L'ḽ', RALT(Key_L)) \ + OP(L'Ṅ', RALT(LSHIFT(Key_M))) \ + OP(L'ṅ', RALT(Key_M)) \ + OP(L'Ṋ', RALT(LSHIFT(Key_N))) \ + OP(L'ṋ', RALT(Key_N)) \ + OP(L'Ṱ', RALT(LSHIFT(Key_T))) \ + OP(L'ṱ', RALT(Key_T)) \ + OP(L'‘', RALT(LSHIFT(Key_V))) /* U+2018, XKB_KEY_leftsinglequotemark, LEFT SINGLE QUOTATION MARK */ \ + OP(L'’', RALT(LSHIFT(Key_B))) /* U+2019, XKB_KEY_rightsinglequotemark, RIGHT SINGLE QUOTATION MARK */ \ + OP(L'“', RALT(Key_V)) /* U+201c, XKB_KEY_leftdoublequotemark, LEFT DOUBLE QUOTATION MARK */ \ + OP(L'”', RALT(Key_B)) /* U+201d, XKB_KEY_rightdoublequotemark, RIGHT DOUBLE QUOTATION MARK */ \ + OP(L'€', RALT(Key_5)) /* U+20ac, XKB_KEY_EuroSign, EURO SIGN */ \ + OP(L'™', RALT(LSHIFT(Key_8))) /* U+2122, XKB_KEY_trademark, TRADE MARK SIGN */ \ + OP(L'⅛', RALT(LSHIFT(Key_2))) /* U+215b, XKB_KEY_oneeighth, VULGAR FRACTION ONE EIGHTH */ \ + OP(L'⅜', RALT(LSHIFT(Key_5))) /* U+215c, XKB_KEY_threeeighths, VULGAR FRACTION THREE EIGHTHS */ \ + OP(L'⅝', RALT(LSHIFT(Key_6))) /* U+215d, XKB_KEY_fiveeighths, VULGAR FRACTION FIVE EIGHTHS */ \ + OP(L'⅞', RALT(LSHIFT(Key_7))) /* U+215e, XKB_KEY_seveneighths, VULGAR FRACTION SEVEN EIGHTHS */ \ + OP(L'─', RALT(Key_Comma)) /* U+2500, XKB_KEY_horizconnector, BOX DRAWINGS LIGHT HORIZONTAL */ \ + +#define _HOST_KEYMAP_NON_PRINTABLE(OP) \ + OP(XKB_KEY_0, Key_0) \ + OP(XKB_KEY_1, Key_1) \ + OP(XKB_KEY_2, Key_2) \ + OP(XKB_KEY_3, Key_3) \ + OP(XKB_KEY_4, Key_4) \ + OP(XKB_KEY_5, Key_5) \ + OP(XKB_KEY_6, Key_6) \ + OP(XKB_KEY_7, Key_7) \ + OP(XKB_KEY_8, Key_8) \ + OP(XKB_KEY_9, Key_9) \ + OP(XKB_KEY_A, LSHIFT(Key_A)) \ + OP(XKB_KEY_Adiaeresis, RALT(LSHIFT(Key_A))) \ + OP(XKB_KEY_Alt_L, Key_LeftAlt) /* XKB_KEY_Alt_L, Left alt */ \ + OP(XKB_KEY_B, LSHIFT(Key_B)) \ + OP(XKB_KEY_BackSpace, Key_Backspace) /* XKB_KEY_BackSpace, Back space, back char */ \ + OP(XKB_KEY_Break, LCTRL(Key_Pause)) /* XKB_KEY_Break */ \ + OP(XKB_KEY_C, LSHIFT(Key_C)) \ + OP(XKB_KEY_Caps_Lock, Key_CapsLock) /* XKB_KEY_Caps_Lock, Caps lock */ \ + OP(XKB_KEY_Control_L, Key_LeftControl) /* XKB_KEY_Control_L, Left control */ \ + OP(XKB_KEY_Control_R, Key_RightControl) /* XKB_KEY_Control_R, Right control */ \ + OP(XKB_KEY_D, LSHIFT(Key_D)) \ + OP(XKB_KEY_Delete, Key_Delete) /* XKB_KEY_Delete, Delete, rubout */ \ + OP(XKB_KEY_Down, Key_DownArrow) /* XKB_KEY_Down, Move down, down arrow */ \ + OP(XKB_KEY_E, LSHIFT(Key_E)) \ + OP(XKB_KEY_ENG, RALT(LSHIFT(Key_G))) \ + OP(XKB_KEY_Ecircumflex, RALT(LSHIFT(Key_R))) \ + OP(XKB_KEY_Ediaeresis, RALT(LSHIFT(Key_E))) \ + OP(XKB_KEY_End, Key_End) /* XKB_KEY_End, EOL */ \ + OP(XKB_KEY_Escape, Key_Escape) /* XKB_KEY_Escape */ \ + OP(XKB_KEY_EuroSign, RALT(Key_5)) \ + OP(XKB_KEY_F, LSHIFT(Key_F)) \ + OP(XKB_KEY_F1, Key_F1) /* XKB_KEY_F1 */ \ + OP(XKB_KEY_F10, Key_F10) /* XKB_KEY_F10 */ \ + OP(XKB_KEY_F11, Key_F11) /* XKB_KEY_F11 */ \ + OP(XKB_KEY_F12, Key_F12) /* XKB_KEY_F12 */ \ + OP(XKB_KEY_F2, Key_F2) /* XKB_KEY_F2 */ \ + OP(XKB_KEY_F3, Key_F3) /* XKB_KEY_F3 */ \ + OP(XKB_KEY_F4, Key_F4) /* XKB_KEY_F4 */ \ + OP(XKB_KEY_F5, Key_F5) /* XKB_KEY_F5 */ \ + OP(XKB_KEY_F6, Key_F6) /* XKB_KEY_F6 */ \ + OP(XKB_KEY_F7, Key_F7) /* XKB_KEY_F7 */ \ + OP(XKB_KEY_F8, Key_F8) /* XKB_KEY_F8 */ \ + OP(XKB_KEY_F9, Key_F9) /* XKB_KEY_F9 */ \ + OP(XKB_KEY_G, LSHIFT(Key_G)) \ + OP(XKB_KEY_Greek_OMEGA, RALT(LSHIFT(Key_Q))) \ + OP(XKB_KEY_H, LSHIFT(Key_H)) \ + OP(XKB_KEY_Home, Key_Home) /* XKB_KEY_Home */ \ + OP(XKB_KEY_Hstroke, RALT(LSHIFT(Key_H))) \ + OP(XKB_KEY_I, LSHIFT(Key_I)) \ + OP(XKB_KEY_ISO_Left_Tab, LSHIFT(Key_Tab)) /* XKB_KEY_ISO_Left_Tab */ \ + OP(XKB_KEY_ISO_Level3_Shift, Key_RightAlt) /* XKB_KEY_ISO_Level3_Shift */ \ + OP(XKB_KEY_Idiaeresis, RALT(LSHIFT(Key_I))) \ + OP(XKB_KEY_Insert, Key_Insert) /* XKB_KEY_Insert, Insert, insert here */ \ + OP(XKB_KEY_J, LSHIFT(Key_J)) \ + OP(XKB_KEY_K, LSHIFT(Key_K)) \ + OP(XKB_KEY_KP_0, LSHIFT(Key_Keypad0)) /* XKB_KEY_KP_0 */ \ + OP(XKB_KEY_KP_1, LSHIFT(Key_Keypad1)) /* XKB_KEY_KP_1 */ \ + OP(XKB_KEY_KP_2, LSHIFT(Key_Keypad2)) /* XKB_KEY_KP_2 */ \ + OP(XKB_KEY_KP_3, LSHIFT(Key_Keypad3)) /* XKB_KEY_KP_3 */ \ + OP(XKB_KEY_KP_4, LSHIFT(Key_Keypad4)) /* XKB_KEY_KP_4 */ \ + OP(XKB_KEY_KP_5, LSHIFT(Key_Keypad5)) /* XKB_KEY_KP_5 */ \ + OP(XKB_KEY_KP_6, LSHIFT(Key_Keypad6)) /* XKB_KEY_KP_6 */ \ + OP(XKB_KEY_KP_7, LSHIFT(Key_Keypad7)) /* XKB_KEY_KP_7 */ \ + OP(XKB_KEY_KP_8, LSHIFT(Key_Keypad8)) /* XKB_KEY_KP_8 */ \ + OP(XKB_KEY_KP_9, LSHIFT(Key_Keypad9)) /* XKB_KEY_KP_9 */ \ + OP(XKB_KEY_KP_Add, Key_KeypadAdd) /* XKB_KEY_KP_Add */ \ + OP(XKB_KEY_KP_Begin, Key_Keypad5) /* XKB_KEY_KP_Begin */ \ + OP(XKB_KEY_KP_Decimal, LSHIFT(Key_KeypadDot)) /* XKB_KEY_KP_Decimal */ \ + OP(XKB_KEY_KP_Delete, Key_KeypadDot) /* XKB_KEY_KP_Delete */ \ + OP(XKB_KEY_KP_Divide, Key_KeypadDivide) /* XKB_KEY_KP_Divide */ \ + OP(XKB_KEY_KP_Down, Key_Keypad2) /* XKB_KEY_KP_Down */ \ + OP(XKB_KEY_KP_End, Key_Keypad1) /* XKB_KEY_KP_End */ \ + OP(XKB_KEY_KP_Enter, Key_KeypadEnter) /* XKB_KEY_KP_Enter, Enter */ \ + OP(XKB_KEY_KP_Home, Key_Keypad7) /* XKB_KEY_KP_Home */ \ + OP(XKB_KEY_KP_Insert, Key_Keypad0) /* XKB_KEY_KP_Insert */ \ + OP(XKB_KEY_KP_Left, Key_Keypad4) /* XKB_KEY_KP_Left */ \ + OP(XKB_KEY_KP_Multiply, Key_KeypadMultiply) /* XKB_KEY_KP_Multiply */ \ + OP(XKB_KEY_KP_Next, Key_Keypad3) /* XKB_KEY_KP_Next */ \ + OP(XKB_KEY_KP_Prior, Key_Keypad9) /* XKB_KEY_KP_Prior */ \ + OP(XKB_KEY_KP_Right, Key_Keypad6) /* XKB_KEY_KP_Right */ \ + OP(XKB_KEY_KP_Subtract, Key_KeypadSubtract) /* XKB_KEY_KP_Subtract */ \ + OP(XKB_KEY_KP_Up, Key_Keypad8) /* XKB_KEY_KP_Up */ \ + OP(XKB_KEY_L, LSHIFT(Key_L)) \ + OP(XKB_KEY_Left, Key_LeftArrow) /* XKB_KEY_Left, Move left, left arrow */ \ + OP(XKB_KEY_Lstroke, RALT(LSHIFT(Key_W))) \ + OP(XKB_KEY_M, LSHIFT(Key_M)) \ + OP(XKB_KEY_Menu, Key_PcApplication) /* XKB_KEY_Menu */ \ + OP(XKB_KEY_Meta_L, LSHIFT(Key_LeftAlt)) /* XKB_KEY_Meta_L, Left meta */ \ + OP(XKB_KEY_N, LSHIFT(Key_N)) \ + OP(XKB_KEY_Next, Key_PageDown) /* XKB_KEY_Next, Next */ \ + OP(XKB_KEY_Num_Lock, Key_KeypadNumLock) /* XKB_KEY_Num_Lock */ \ + OP(XKB_KEY_O, LSHIFT(Key_O)) \ + OP(XKB_KEY_Ocircumflex, RALT(LSHIFT(Key_P))) \ + OP(XKB_KEY_Odiaeresis, RALT(LSHIFT(Key_O))) \ + OP(XKB_KEY_P, LSHIFT(Key_P)) \ + OP(XKB_KEY_Pause, Key_Pause) /* XKB_KEY_Pause, Pause, hold */ \ + OP(XKB_KEY_Print, Key_PrintScreen) /* XKB_KEY_Print */ \ + OP(XKB_KEY_Prior, Key_PageUp) /* XKB_KEY_Prior, Prior, previous */ \ + OP(XKB_KEY_Q, LSHIFT(Key_Q)) \ + OP(XKB_KEY_R, LSHIFT(Key_R)) \ + OP(XKB_KEY_Return, Key_Enter) /* XKB_KEY_Return, Return, enter */ \ + OP(XKB_KEY_Right, Key_RightArrow) /* XKB_KEY_Right, Move right, right arrow */ \ + OP(XKB_KEY_S, LSHIFT(Key_S)) \ + OP(XKB_KEY_Scaron, RALT(LSHIFT(Key_S))) \ + OP(XKB_KEY_Scroll_Lock, Key_ScrollLock) /* XKB_KEY_Scroll_Lock */ \ + OP(XKB_KEY_Shift_L, Key_LeftShift) /* XKB_KEY_Shift_L, Left shift */ \ + OP(XKB_KEY_Shift_R, Key_RightShift) /* XKB_KEY_Shift_R, Right shift */ \ + OP(XKB_KEY_Super_L, Key_LeftGui) /* XKB_KEY_Super_L, Left super */ \ + OP(XKB_KEY_Super_R, Key_RightGui) /* XKB_KEY_Super_R, Right super */ \ + OP(XKB_KEY_Sys_Req, LALT(Key_PrintScreen)) /* XKB_KEY_Sys_Req */ \ + OP(XKB_KEY_T, LSHIFT(Key_T)) \ + OP(XKB_KEY_Tab, Key_Tab) /* XKB_KEY_Tab */ \ + OP(XKB_KEY_U, LSHIFT(Key_U)) \ + OP(XKB_KEY_Ucircumflex, RALT(LSHIFT(Key_Y))) \ + OP(XKB_KEY_Udiaeresis, RALT(LSHIFT(Key_U))) \ + OP(XKB_KEY_Up, Key_UpArrow) /* XKB_KEY_Up, Move up, up arrow */ \ + OP(XKB_KEY_V, LSHIFT(Key_V)) \ + OP(XKB_KEY_W, LSHIFT(Key_W)) \ + OP(XKB_KEY_X, LSHIFT(Key_X)) \ + OP(XKB_KEY_XF86ClearGrab, LCTRL(LALT(Key_KeypadMultiply))) /* XKB_KEY_XF86ClearGrab, kill application with grab */ \ + OP(XKB_KEY_XF86Next_VMode, LCTRL(LALT(Key_KeypadAdd))) /* XKB_KEY_XF86Next_VMode, next video mode available */ \ + OP(XKB_KEY_XF86Prev_VMode, LCTRL(LALT(Key_KeypadSubtract))) /* XKB_KEY_XF86Prev_VMode, prev. video mode available */ \ + OP(XKB_KEY_XF86Switch_VT_1, LCTRL(LALT(Key_F1))) /* XKB_KEY_XF86Switch_VT_1 */ \ + OP(XKB_KEY_XF86Switch_VT_10, LCTRL(LALT(Key_F10))) /* XKB_KEY_XF86Switch_VT_10 */ \ + OP(XKB_KEY_XF86Switch_VT_11, LCTRL(LALT(Key_F11))) /* XKB_KEY_XF86Switch_VT_11 */ \ + OP(XKB_KEY_XF86Switch_VT_12, LCTRL(LALT(Key_F12))) /* XKB_KEY_XF86Switch_VT_12 */ \ + OP(XKB_KEY_XF86Switch_VT_2, LCTRL(LALT(Key_F2))) /* XKB_KEY_XF86Switch_VT_2 */ \ + OP(XKB_KEY_XF86Switch_VT_3, LCTRL(LALT(Key_F3))) /* XKB_KEY_XF86Switch_VT_3 */ \ + OP(XKB_KEY_XF86Switch_VT_4, LCTRL(LALT(Key_F4))) /* XKB_KEY_XF86Switch_VT_4 */ \ + OP(XKB_KEY_XF86Switch_VT_5, LCTRL(LALT(Key_F5))) /* XKB_KEY_XF86Switch_VT_5 */ \ + OP(XKB_KEY_XF86Switch_VT_6, LCTRL(LALT(Key_F6))) /* XKB_KEY_XF86Switch_VT_6 */ \ + OP(XKB_KEY_XF86Switch_VT_7, LCTRL(LALT(Key_F7))) /* XKB_KEY_XF86Switch_VT_7 */ \ + OP(XKB_KEY_XF86Switch_VT_8, LCTRL(LALT(Key_F8))) /* XKB_KEY_XF86Switch_VT_8 */ \ + OP(XKB_KEY_XF86Switch_VT_9, LCTRL(LALT(Key_F9))) /* XKB_KEY_XF86Switch_VT_9 */ \ + OP(XKB_KEY_XF86Ungrab, LCTRL(LALT(Key_KeypadDivide))) /* XKB_KEY_XF86Ungrab, force ungrab */ \ + OP(XKB_KEY_Y, LSHIFT(Key_Y)) \ + OP(XKB_KEY_Z, LSHIFT(Key_Z)) \ + OP(XKB_KEY_a, Key_A) \ + OP(XKB_KEY_adiaeresis, RALT(Key_A)) \ + OP(XKB_KEY_ampersand, LSHIFT(Key_7)) \ + OP(XKB_KEY_apostrophe, Key_Quote) /* XKB_KEY_quoteright, deprecated */ \ + OP(XKB_KEY_asciicircum, LSHIFT(Key_6)) \ + OP(XKB_KEY_asciitilde, LSHIFT(Key_Backtick)) \ + OP(XKB_KEY_asterisk, LSHIFT(Key_8)) \ + OP(XKB_KEY_at, LSHIFT(Key_2)) \ + OP(XKB_KEY_b, Key_B) \ + OP(XKB_KEY_backslash, Key_NonUsPound) \ + OP(XKB_KEY_bar, LSHIFT(Key_NonUsPound)) \ + OP(XKB_KEY_braceleft, RALT(Key_7)) \ + OP(XKB_KEY_braceright, RALT(Key_0)) \ + OP(XKB_KEY_bracketleft, Key_LeftBracket) \ + OP(XKB_KEY_bracketright, Key_RightBracket) \ + OP(XKB_KEY_brokenbar, RALT(LSHIFT(Key_NonUsBackslashAndPipe))) \ + OP(XKB_KEY_c, Key_C) \ + OP(XKB_KEY_cent, RALT(Key_C)) \ + OP(XKB_KEY_colon, LSHIFT(Key_Semicolon)) \ + OP(XKB_KEY_comma, Key_Comma) \ + OP(XKB_KEY_copyright, RALT(LSHIFT(Key_C))) \ + OP(XKB_KEY_d, Key_D) \ + OP(XKB_KEY_dead_abovedot, RALT(Key_Period)) /* XKB_KEY_dead_abovedot */ \ + OP(XKB_KEY_dead_abovering, RALT(LSHIFT(Key_LeftBracket))) /* XKB_KEY_dead_abovering */ \ + OP(XKB_KEY_dead_acute, RALT(Key_Quote)) /* XKB_KEY_dead_acute */ \ + OP(XKB_KEY_dead_belowdot, RALT(Key_Slash)) /* XKB_KEY_dead_belowdot */ \ + OP(XKB_KEY_dead_breve, RALT(LSHIFT(Key_NonUsPound))) /* XKB_KEY_dead_breve */ \ + OP(XKB_KEY_dead_caron, RALT(LSHIFT(Key_Quote))) /* XKB_KEY_dead_caron */ \ + OP(XKB_KEY_dead_cedilla, RALT(Key_Equals)) /* XKB_KEY_dead_cedilla */ \ + OP(XKB_KEY_dead_circumflex, RALT(Key_6)) /* XKB_KEY_dead_circumflex */ \ + OP(XKB_KEY_dead_diaeresis, RALT(Key_LeftBracket)) /* XKB_KEY_dead_diaeresis */ \ + OP(XKB_KEY_dead_doubleacute, RALT(LSHIFT(Key_Semicolon))) /* XKB_KEY_dead_doubleacute */ \ + OP(XKB_KEY_dead_grave, RALT(Key_Backtick)) /* XKB_KEY_dead_grave */ \ + OP(XKB_KEY_dead_hook, RALT(Key_J)) /* XKB_KEY_dead_hook */ \ + OP(XKB_KEY_dead_horn, RALT(LSHIFT(Key_J))) /* XKB_KEY_dead_horn */ \ + OP(XKB_KEY_dead_macron, RALT(LSHIFT(Key_RightBracket))) /* XKB_KEY_dead_macron */ \ + OP(XKB_KEY_dead_ogonek, RALT(LSHIFT(Key_Equals))) /* XKB_KEY_dead_ogonek */ \ + OP(XKB_KEY_dead_tilde, RALT(Key_RightBracket)) /* XKB_KEY_dead_tilde */ \ + OP(XKB_KEY_degree, RALT(LSHIFT(Key_0))) \ + OP(XKB_KEY_division, RALT(LSHIFT(Key_Period))) \ + OP(XKB_KEY_dollar, RALT(Key_4)) \ + OP(XKB_KEY_dstroke, RALT(Key_F)) \ + OP(XKB_KEY_e, Key_E) \ + OP(XKB_KEY_ecircumflex, RALT(Key_R)) \ + OP(XKB_KEY_ediaeresis, RALT(Key_E)) \ + OP(XKB_KEY_eng, RALT(Key_G)) \ + OP(XKB_KEY_equal, Key_Equals) \ + OP(XKB_KEY_exclam, LSHIFT(Key_1)) \ + OP(XKB_KEY_exclamdown, RALT(LSHIFT(Key_1))) \ + OP(XKB_KEY_f, Key_F) \ + OP(XKB_KEY_fiveeighths, RALT(LSHIFT(Key_6))) \ + OP(XKB_KEY_g, Key_G) \ + OP(XKB_KEY_grave, Key_Backtick) /* XKB_KEY_quoteleft, deprecated */ \ + OP(XKB_KEY_greater, LSHIFT(Key_Period)) \ + OP(XKB_KEY_guillemotleft, RALT(Key_Z)) \ + OP(XKB_KEY_guillemotright, RALT(Key_X)) \ + OP(XKB_KEY_h, Key_H) \ + OP(XKB_KEY_horizconnector, RALT(Key_Comma)) \ + OP(XKB_KEY_hstroke, RALT(Key_H)) \ + OP(XKB_KEY_i, Key_I) \ + OP(XKB_KEY_idiaeresis, RALT(Key_I)) \ + OP(XKB_KEY_j, Key_J) \ + OP(XKB_KEY_k, Key_K) \ + OP(XKB_KEY_kra, RALT(Key_K)) /* XKB_KEY_kappa, deprecated */ \ + OP(XKB_KEY_l, Key_L) \ + OP(XKB_KEY_leftdoublequotemark, RALT(Key_V)) \ + OP(XKB_KEY_leftsinglequotemark, RALT(LSHIFT(Key_V))) \ + OP(XKB_KEY_less, Key_NonUsBackslashAndPipe) \ + OP(XKB_KEY_lstroke, RALT(Key_W)) \ + OP(XKB_KEY_m, Key_M) \ + OP(XKB_KEY_minus, Key_Minus) \ + OP(XKB_KEY_multiply, RALT(LSHIFT(Key_Comma))) \ + OP(XKB_KEY_n, Key_N) \ + OP(XKB_KEY_notsign, RALT(LSHIFT(Key_Backtick))) \ + OP(XKB_KEY_numbersign, LSHIFT(Key_3)) \ + OP(XKB_KEY_o, Key_O) \ + OP(XKB_KEY_ocircumflex, RALT(Key_P)) \ + OP(XKB_KEY_odiaeresis, RALT(Key_O)) \ + OP(XKB_KEY_oneeighth, RALT(LSHIFT(Key_2))) \ + OP(XKB_KEY_onesuperior, RALT(Key_1)) \ + OP(XKB_KEY_ordfeminine, RALT(LSHIFT(Key_F))) \ + OP(XKB_KEY_p, Key_P) \ + OP(XKB_KEY_parenleft, LSHIFT(Key_9)) \ + OP(XKB_KEY_parenright, LSHIFT(Key_0)) \ + OP(XKB_KEY_percent, LSHIFT(Key_5)) \ + OP(XKB_KEY_period, Key_Period) \ + OP(XKB_KEY_plus, LSHIFT(Key_Equals)) \ + OP(XKB_KEY_plusminus, RALT(LSHIFT(Key_9))) \ + OP(XKB_KEY_q, Key_Q) \ + OP(XKB_KEY_question, LSHIFT(Key_Slash)) \ + OP(XKB_KEY_questiondown, RALT(LSHIFT(Key_Minus))) \ + OP(XKB_KEY_quotedbl, LSHIFT(Key_Quote)) \ + OP(XKB_KEY_r, Key_R) \ + OP(XKB_KEY_rightdoublequotemark, RALT(Key_B)) \ + OP(XKB_KEY_rightsinglequotemark, RALT(LSHIFT(Key_B))) \ + OP(XKB_KEY_s, Key_S) \ + OP(XKB_KEY_scaron, RALT(Key_S)) \ + OP(XKB_KEY_semicolon, Key_Semicolon) \ + OP(XKB_KEY_seveneighths, RALT(LSHIFT(Key_7))) \ + OP(XKB_KEY_slash, Key_Slash) \ + OP(XKB_KEY_space, Key_Spacebar) \ + OP(XKB_KEY_sterling, RALT(Key_3)) \ + OP(XKB_KEY_t, Key_T) \ + OP(XKB_KEY_threeeighths, RALT(LSHIFT(Key_5))) \ + OP(XKB_KEY_trademark, RALT(LSHIFT(Key_8))) \ + OP(XKB_KEY_u, Key_U) \ + OP(XKB_KEY_ucircumflex, RALT(Key_Y)) \ + OP(XKB_KEY_udiaeresis, RALT(Key_U)) \ + OP(XKB_KEY_underscore, LSHIFT(Key_Minus)) \ + OP(XKB_KEY_v, Key_V) \ + OP(XKB_KEY_w, Key_W) \ + OP(XKB_KEY_x, Key_X) \ + OP(XKB_KEY_y, Key_Y) \ + OP(XKB_KEY_yen, RALT(Key_2)) \ + OP(XKB_KEY_z, Key_Z) \ + + +namespace kaleidoscope { +namespace host_keymap { +namespace linux { +namespace za { +namespace standard { + +HOST_KEYMAP_LINUX( + _HOST_KEYMAP_ASCII, + _HOST_KEYMAP_UNICODE, + _HOST_KEYMAP_NON_PRINTABLE +) + +} // namespace standard +} // namespace za +} // namespace linux +} // namespace host_keymap +} // namespace kaleidoscope + +#undef _HOST_KEYMAP_ASCII +#undef _HOST_KEYMAP_UNICODE +#undef _HOST_KEYMAP_NON_PRINTABLE +